iOS&Android

Android google admob 使用

2020-03-12  本文已影响0人  lambentlight

国内做的app通常情况下,我们根本见不到广告,比较纯净,而从谷歌商店下载的应用,部分就会包含广告。企业做app是为了服务客户,个人做的话,通常是为了方便大家使用,但毕竟不是慈善家,用爱发电毕竟不长久,谷歌的广告可以比较好的解决这个问题。广告的主要目的,是为了给app作者创造收入。


1、个人理解的运作机制:

企业需要发布广告,自己做好广告以后交给google。
个人在google注册admob的账号,然后创建应用,并且在应用中创建广告单元。
google给每个广告单元分配广告。
每当用户有效点击广告的时候,企业需要支付一部分费用,之后按月结算费用,支付给个人。

途中,如果企业发现点击是无效的(个人恶意点击等),可以举报,之后,个人注册的admob可能会被封。这个涉及到了admob的使用条款。不再详细说明了。

2、使用

具体的使用可以参考官方文档

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.
    

注意:一定要配置下面的两个属性

UnitId是我们创建广告单元时,生成到,后面会提到

5、加载广告

注意:请在主线程中进行对移动广告 SDK 的所有调用

放置好后,下一步是加载广告。此步骤可使用 类中的 loadAd() 方法完成。这需要 参数,其中包含关于单个广告请求的运行时信息(如定位信息)。

以下示例显示了如何通过 ActivityonCreate() 方法加载广告:

    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
横幅广告 ca-app-pub-3940256099942544/6300978111
插页式广告 ca-app-pub-3940256099942544/1033173712
插页式视频广告 ca-app-pub-3940256099942544/8691691433
激励视频广告 ca-app-pub-3940256099942544/5224354917
原生高级广告 ca-app-pub-3940256099942544/2247696110
原生高级视频广告 ca-app-pub-3940256099942544/1044960115

上表是我们在各个页面使用的adUnitId,在xml里面或者自己定义的View中设置的。
Mainifest中设置的applicationid是ca-app-pub-3940256099942544~3347511713

在测试过程中,这些广告的点击是不会产生流量的,可以放心使用。

2. 启用测试设备

如果您希望使用实际投放的广告进行更严格的测试,那么现在就可以将您的设备配置为测试设备,并使用您在 界面中创建的自己的广告单元 ID。

请按照以下步骤操作,将您的设备添加为测试设备。

添加您的测试设备

  1. 加载您的已植入广告的应用,并发出广告请求。
  2. 检查 logcat 输出,以查找像下面这样的消息:
I/Ads: Use AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
to get test ads on this device."
  1. 修改代码,以便用您的测试设备 ID 调用AdRequest.Builder.addTestDevice()。您可以为多个设备多次调用这个方法。

  2. 重新运行您的应用。如果广告是 Google 广告,则您会在广告(横幅广告、插页式广告或激励视频广告)顶部的中间部分看到一个“Test Ad”标签:

[站外图片上传中...(image-519c72-1583981898605)]


以上是所有Android中,实装需要注意的所有地方了

3、admob注册

下面说明一下,关于我们实际使用中的unitId和applicaitonId是如何获取的。

1、注册admob账号。

注册账号

在firebase中注册admob账号。

2、创建新的应用

注意!!!:这里创建了的应用,目前来看是无法删除的,请谨慎操作

创建应用

这里根据自己的需求来设置,如果选择已经发布的话,我们需要去找到自己的应用,然后关联应用。

3、输入应用的信息

我在上一步选择了否

应用信息

4、创建应用成功

成功创建

注意这个应用id,是我们在使用过程中,配置在Mainifest中的id,需要自己记录。

5、创建广告单元

广告选择

这里跟我们使用中一样,需要我们选择不同的广告格式,需要我们在实装的时候匹配

6、设置广告单元

横幅广告

这里依旧以横幅广告为例,需要配置各项参数。

7、完成

成功创建

这里就已经完成了创建,到此就全部结束了。

图中的两个id,1中的id是我们配置在Mainifest中,2是在adview中显示的,我们可以在一个应用中,创建不同的广告单元,不同的页面去显示不同的广告单元。

8、后续

在成功创建以后,还没有结束,在admob的首页会提示我们没有付款,没办法正常显示广告。

付款信息 填写信息

填写完成之后

完成

因为我并没有正式发布过app,所以不太清楚后面还有没有其他的操作需要我们进行。这里还有待补充。

上一篇下一篇

猜你喜欢

热点阅读