Android App 设置 Google AdMob 广告

发布时间: 2020-01-20 14:13:47 作者: 大象笔记

前提条件

需要应用先上架 Google Play.

获取 APP ID 及 广告单元 ID

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

引入 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。

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

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

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

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

如何自动切换 adUnitId

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

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

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

实际广告效果

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

真机不显示正式广告

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

我是一名山东烟台的开发者,联系作者