国内做的app通常情况下,我们根本见不到广告,比较纯净,而从谷歌商店下载的应用,部分就会包含广告。企业做app是为了服务客户,个人做的话,通常是为了方便大家使用,但毕竟不是慈善家,用爱发电毕竟不长久,谷歌的广告可以比较好的解决这个问题。广告的主要目的,是为了给app作者创造收入。
1、个人理解的运作机制:
企业需要发布广告,自己做好广告以后交给google。
个人在google注册admob的账号,然后创建应用,并且在应用中创建广告单元。
google给每个广告单元分配广告。
每当用户有效点击广告的时候,企业需要支付一部分费用,之后按月结算费用,支付给个人。
途中,如果企业发现点击是无效的(个人恶意点击等),可以举报,之后,个人注册的admob可能会被封。这个涉及到了admob的使用条款。不再详细说明了。
具体的使用可以参考 官方文档
admob在编码上,十分简单
1、导入admob库
implementation 'com.google.firebase:firebase-ads:18.0.0'
2、更新 AndroidManifest.xml
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>
</application>
</manifest>
3、初始化 SDK
在加载广告之前,通过使用您的 AdMob 应用 ID 来调用 MobileAds.initialize()
,让应用初始化 Mobile Ads SDK。此操作只需执行一次,最好是在应用启动时执行。您可以在 AdMob 界面中找到您的应用 ID。
在 Activity 中调用 initialize()
方法的示例如下:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID")
这里我实际使用的时候,发现使用MobileAds.initialize(this)
就足够了,因为在AndroidManifest.xml
中已经配置过了applicaitonID了
之后我们可以选择不同的广告形式横幅广告、
这里以横幅广告为例。
4、向布局中添加
# main_activity.xml
<AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="">
当然也可以通过代码创建
val adView = (this)
adView.adSize = AdSize.BANNER
adView.adUnitId = ""
// TODO: Add adView to your view hierarchy.
注意:一定要配置下面的两个属性
ads:adSize
- 将此属性设置为要使用的广告尺寸。如果您不想使用该常量定义的标准尺寸,可改为设置自定义尺寸。有关详情,请参阅下面的“横幅广告尺寸”部分。
ads:adUnitId
- 将此属性设置为您应用中用于展示广告的广告单元所用的唯一标识符。如果您要在不同的 Activity 中展示横幅广告,则其中每个都需要一个广告单元。
UnitId是我们创建广告单元时,生成到,后面会提到
5、加载广告
注意:请在主线程中进行对移动广告 SDK 的所有调用
放置好后,下一步是加载广告。此步骤可使用 类中的 loadAd()
方法完成。这需要 参数,其中包含关于单个广告请求的运行时信息(如定位信息)。
以下示例显示了如何通过 Activity
的 onCreate()
方法加载广告:
package ...
import ...
import
import
class MainActivity : AppCompatActivity() {
lateinit var m :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
m = findViewById(R.id.)
val adRequest = .Builder().build()
m.loadAd(adRequest)
注意:如果您的广告加载失败,只要已为广告单元配置了刷新功能,就无需明确请求再次加载;Google 移动广告 SDK 会按照您在 界面中指定的频率进行刷新。如果您尚未启用刷新,则需要发出新的请求。
当我们的广告加载失败的时候,会自动重新加载,不需要我们做其他操作。
6、广告事件
要进一步自定义您的广告行为,您可以在广告生命周期内加入许多事件,如加载、打开、关闭等等。您可以通过 AdListener
类监听这些事件。
要将 AdListener
用于 ,只需调用 setAdListener()
方法即可:
m.adListener = object: AdListener() {
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
override fun onAdFailedToLoad(errorCode : Int) {
// Code to be executed when an ad request fails.
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
override fun onAdLeftApplication() {
// Code to be executed when the user has left the app.
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
onAdLoaded()
广告加载完成后,系统会执行 onAdLoaded()
方法。如果您想推迟给 Activity 或 Fragment 添加 的操作,例如推迟到您确定广告会加载时,可以在此处进行。
onAdFailedToLoad()
onAdFailedToLoad()
是唯一包含参数的方法。errorCode
参数会指明发生了何种类型的失败。系统将这些可能的类型值定义为 类中的如下常量:* ERROR_CODE_INTERNAL_ERROR
- 内部出现问题;例如,收到广告服务器的无效响应。* ERROR_CODE_INVALID_REQUEST
- 广告请求无效;例如,广告单元 ID 不正确。* ERROR_CODE_NETWORK_ERROR
- 由于网络连接问题,广告请求失败。* ERROR_CODE_NO_FILL
- 广告请求成功,但由于缺少广告资源,未返回广告。
onAdOpened()
用户点按广告时,系统会调用此方法。
onAdLeftApplication()
用户点击打开其他应用(例如,Google Play 商店)时,系统会先调用 onAdOpened()
,再调用此方法,从而在后台运行当前应用。
onAdClosed()
用户查看了广告的目标网址并返回应用时,系统会调用此方法。应用可以使用此方法恢复暂停的活动,或执行任何其他必要的操作,以做好互动准备。
广告的事件,一般用来监听广告点击,加载失败等、看情况使用。
7、广告测试。
实装确实就上面的那些,非常简单,这里说一下测试相关的一些内容。官方文档
最开始的时候说到过,如果我们在测试的时候,测试点击广告,这些点击是属于无效的动作,企业收到点击之后需要给我们付费,这样会导致我们的账号被封。所以测试的时候,有两种方式。
1. 使用谷歌给定的示例广告单元。
示例广告单元 ID
上表是我们在各个页面使用的adUnitId,在xml里面或者自己定义的View中设置的。
Mainifest中设置的applicationid是ca-app-pub-3940256099942544~3347511713
在测试过程中,这些广告的点击是不会产生流量的,可以放心使用。
2. 启用测试设备
如果您希望使用实际投放的广告进行更严格的测试,那么现在就可以将您的设备配置为测试设备,并使用您在 界面中创建的自己的广告单元 ID。
请按照以下步骤操作,将您的设备添加为测试设备。
添加您的测试设备
加载您的已植入广告的应用,并发出广告请求。
检查 logcat 输出,以查找像下面这样的消息:
I/Ads: Use AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
to get test ads on this device."
修改代码,以便用您的测试设备 ID 调用AdRequest.Builder.addTestDevice()
。您可以为多个设备多次调用这个方法。
重新运行您的应用。如果广告是 Google 广告,则您会在广告(横幅广告、插页式广告或激励视频广告)顶部的中间部分看到一个“Test Ad”标签:
[站外图片上传中...(image-519c72-1583981898605)]
以上是所有Android中,实装需要注意的所有地方了
3、admob注册
下面说明一下,关于我们实际使用中的unitId和applicaitonId是如何获取的。
1、注册admob账号。
这里就已经完成了创建,到此就全部结束了。
图中的两个id,1中的id是我们配置在Mainifest
中,2是在adview中显示的,我们可以在一个应用中,创建不同的广告单元,不同的页面去显示不同的广告单元。
在成功创建以后,还没有结束,在admob的首页会提示我们没有付款,没办法正常显示广告。