Android App 设置 Google AdMob 广告

文章目录

    前提条件

    需要应用先上架 Google Play.

    获取 APP ID 及 广告单元 ID

    登陆 AdMob 后台,https://apps.admob.com/v2/home

    • 选择要添加 AdMob 广告的应用,打开“广告单元”菜单
    • 添加广告单元,或者打开已有的广告单元
    • 在实现说明中,获取应用 ID 及广告单元 ID

    引入 AdMob SDK

    即,Google Mobile Ads SDK

    参考文档:

    https://developers.google.com/admob/android/quick-start?hl=zh-CN#import_the_mobile_ads_sdk

    在 app-level build.gradle 的 dependencies 添加依赖:

      implementation 'com.google.android.gms:play-services-ads:22.1.0'
    

    注意,参考上面链接换成最新的 admob sdk,否则会报错,类似:

    com.google.android.gms:play-services-ads version 18.3.0 has been reported as problematic by its author and will block publishing of your app to Play Console

    在 AndroidManifest.xml 中设置 AdMob App ID

    <manifest>
        <application>
            <meta-data
                android:name="com.google.android.gms.ads.APPLICATION_ID"
                android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
        </application>
    </manifest>
    

    应用 ID,可以在 Admob 的具体应用的应用设置中找到。

    初始化 Mobile Ads SDK

    kotlin 代码。

    setContentView 中进行初始化:

    MobileAds.initialize(this) {}
    

    需要引入

    import com.google.android.gms.ads.MobileAds;
    

    引入横幅广告

    layout XML 中添加:

    <com.google.android.gms.ads.AdView
          xmlns:ads="http://schemas.android.com/apk/res-auto"
          android:id="@+id/adView"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_alignParentBottom="true"
          ads:adSize="BANNER"
          ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
      </com.google.android.gms.ads.AdView>
    

    这个 adUnitId 是测试 ID,在调试时,需要使用这个。只有发布时才能使用真实广告单元 ID。

    加载广告:

    // 依赖
    import com.google.android.gms.ads.AdRequest
    import com.google.android.gms.ads.AdView
    
    // 添加属性
    lateinit var mAdView : AdView
    
    // 加载广告
    mAdView = findViewById(R.id.adView)
    val adRequest = AdRequest.Builder().build()
    mAdView.loadAd(adRequest)
    

    adSize 的值

    SMART_BANNER。

    自适应横幅广告与智能横幅广告的区别?因为文档中说自适应横幅广告将替代智能横幅广告。

    智能横幅可实现三种广告高度:

    • 广告高度 32 dp,屏幕高度 ≤ 400 dp
    • 广告高度 50 dp,屏幕高度 > 400 dp 且 ≤ 720 dp
    • 广告高度 90 dp,屏幕高度 > 720 dp

    自适应横幅广告参考 https://developers.google.com/admob/android/banner/adaptive

    优化了智能横幅只能三种固定高度的问题。但是看起来实现太复杂,所以还是使用智能横幅 SMART_BANNER 吧。

    如何自动切换 adUnitId

    在 debug 和 release 时,使用不同的 adUnitId。

    参考:Debug 和 Release 版本自动切换不同的 AdMob ad unit id 配置

    注意:一定不用忘了发布 release 版时切换为自己的广告 ID,否则用户看到的也是 test ad … 我就犯过这个错误。。。

    实际广告效果

    添加测试广告代码之后,显示效果如下:

    Android App 设置 Google AdMob 广告

    真机不显示正式广告

    但是,我换成正式广告 ID 之后,发现 AdMob 广告在真机上无法显示

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式