前提条件
需要应用先上架 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 ... 我就犯过这个错误。。。
实际广告效果
添加测试广告代码之后,显示效果如下:
真机不显示正式广告
但是,我换成正式广告 ID 之后,发现 AdMob 广告在真机上无法显示。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式
谈笑风生
cocos (来自: 中国 山东 淄博 移动) 4年前
大象 (来自: 中国 山东 烟台 电信) 4年前