Android google admob 使用

国内做的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.
    

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

  • ads:adSize - 将此属性设置为要使用的广告尺寸。如果您不想使用该常量定义的标准尺寸,可改为设置自定义尺寸。有关详情,请参阅下面的“横幅广告尺寸”部分
  • ads:adUnitId - 将此属性设置为您应用中用于展示广告的广告单元所用的唯一标识符。如果您要在不同的 Activity 中展示横幅广告,则其中每个都需要一个广告单元。

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,所以不太清楚后面还有没有其他的操作需要我们进行。这里还有待补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,295评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,928评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,682评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,209评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,237评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,965评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,586评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,487评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,016评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,136评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,271评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,948评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,619评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,139评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,252评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,598评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,267评论 2 358

推荐阅读更多精彩内容