Admob介绍

admob是Google的移动广告平台,集成admob的SDK到APP中,获取广告数据展示出来,可以给我们带来广告收益。对于大流量的应用,如果可以在合适的位置,无缝的加入广告,可以带来可观的广告收入,这已经是一个公开的成功商业模式。
有心的小伙伴可以往这个方向尝试,财务自由指日可待哦!

先上张admob原生广告的效果图,这是一张内容类型的原生广告。

Admob广告类型

Admob有哪几种展现形式的广告呢?

  • Banner(横幅广告):最常见的,就是平时看到的屏幕的底部或者顶部有一个横条的广告条。

  • Interstitial(插页广告):类似启动页广告,整个屏幕显示一副广告。

  • Rewarded Video(应用内购买广告):这个玩国外游戏经常会看到,你看完一个广告视频,游戏会奖励你一些道具或者其他的什么(这个奖励是一个整数,在AdMob中可以设置数量,用户看完视频会得到这个数量的奖励,比如奖励3瓶药水,3条生命等)。

  • Native(原生广告):这个是体验最好的广告形式,和原生app无缝对接,也许你已经见过一个列表的某个item内容展示的是广告,就是这种形式。

Admob广告接入入门

下面就以Admob的原生广告为例,带大家入门一下,怎么集成使用。

预备条件

  • Target Android API level 14 or higher
  • Admob官网注册添加应用和广告单元

添加依赖

dependencies {implementation 'com.google.android.gms:play-services-ads:17.0.0'
}

配置AndroidManifest.xml

<manifest><application><!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --><meta-dataandroid:name="com.google.android.gms.ads.APPLICATION_ID"android:value="[ADMOB_APP_ID]"/></application>
</manifest>

注意:对于Google Mobile Ads SDK version 17.0.0,这一步是必须的

初始化SDK

在广告加载之前,需要向MobileAds传入app id初始化SDK,这里要注意,需要在admob上注册应用后才有app id哦。
下面代码是在Activity中初始化的,最理想的时机是在应用启动的时候。

package ...
import ...
import com.google.android.gms.ads.MobileAds;public class MainActivity extends AppCompatActivity {...protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");}...
}

加载广告

首先需要构建AdLoader,在Builder中传入广告单元id,不同广告位对应不同的广告单元。

        AdLoader.Builder builder = new AdLoader.Builder(this, ADMOB_AD_UNIT_ID);builder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {@Overridepublic void onAppInstallAdLoaded(NativeAppInstallAd nativeAd) {FrameLayout frameLayout =findViewById(R.id.fl_adplaceholder);NativeAppInstallAdView adView = (NativeAppInstallAdView) getLayoutInflater().inflate(R.layout.ad_app_install, null);populateUnifiedNativeAdView(nativeAd, adView);frameLayout.removeAllViews();frameLayout.addView(adView);}});AdLoader adLoader = builder.withAdListener(new AdListener() {@Overridepublic void onAdFailedToLoad(int errorCode) {Toast.makeText(SingleAdActivity.this, "Failed to load native ad: "+ errorCode, Toast.LENGTH_SHORT).show();}}).build();

加载单条广告

adLoader.loadAd(new AdRequest.Builder().build());

如果需要加载多条广告,admob也提供了加载多条广告的方法,如下:

adLoader.loadAds(new AdRequest.Builder().build(), 3);

不过有一定限制,获取多条广告的上限为5,你可以传入参数5,但最多返回5条广告,也有可能小于5条。每收到一条广告,onAppInstallAdLoaded会回调一次。

如果获取多条广告,怎么知道数据加载完毕呢?可以通过isLoading()判断广告是否全部加载完毕

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110").forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {@Overridepublic void onAppInstallAdLoaded(NativeAppInstallAd ad) {...// some code that displays the app install ad....if (adLoader.isLoading()) {// The AdLoader is still loading ads.// Expect more adLoaded or onAdFailedToLoad callbacks.} else {// The AdLoader has finished loading ads.}}
}).build();

Ad view class

从上面一路看下来,留心的小伙伴可能已经注意到了NativeAppInstallAdView这个类,从命名看,这个类应该是属于SDK里面的,是用来做什么的呢?

这个类确实来自SDK,先要从原生广告类型说起,Admob原生广告有两种类型:NativeAppInstallAd和NativeContentAd:
NativeAppInstallAd是应用安装类型的广告,对应到View是NativeAppInstallAdView
NativeContentAd是内容类型的广告,对应到View是NativeContentAdView

上面的两个View class,我们在使用时,必须把它们作为广告布局的父View,这是必须要遵守的使用规范。

如下是以NativeContentAdView作为父View的广告布局:

<com.google.android.gms.ads.formats.NativeContentAdViewxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:orientation="vertical"... ><LinearLayoutandroid:orientation="horizontal"... ><TextViewandroid:id="@+id/contentad_headline"... /></LinearLayout>// Other assets such as image or media view, call to action, etc follow....</LinearLayout>
</com.google.android.gms.ads.formats.NativeContentAdView>

Admob原生广告官方demo

这里给两个官方放在github上的demo,大家可以参考看看:

googleads demo:https://github.com/googleads/googleads-mobile-android-examples

googlecodelabs demo:https://github.com/googlecodelabs/admob-native-advanced-feed

注意事项

  • 广告位添加后,可能需要等上2个小时才能使用
  • 不依赖gms,Admob广告在国内也可以使用,但是试了一下,不翻墙好像也加载不出来

他山之石

分享几个从别人文章看来的几条广告运营的经验:

  1. 首屏一定要展示广告。这主要是因为产品首屏的曝光量大,但广告要展示得当。

  2. 多账户分担风险。因为用一个账户创建所有的ad unit/placement时,虽然接入的工作量小,但风险过于集中了,哪天账户被封了就欲哭无泪了;因此建议同时创建多个广告账户,在产品里面轮流使用,很多时候违规也只是其中的一个,哪怕被封损失也小。

  3. 多平台互为备份。例如Facebook/Admob两个平台互为备份,当Facebook广告请求不到或加载不了时,则展示Admob广告,这样能最大化保证广告展现。

  4. 最大化广告刷新机制。例如用户刷新内容列表,哪怕内容没更新,把列表里面的广告重新请求并换一批。

  5. 广告预加载机制。不用等到用户请求时再去向广告平台发起请求,可以提前请求到数据,需要的时候随时可用,这样可以保证流畅体验。

  6. 选择合适的广告形式。毕竟有banner广告,插屏广告,原生广告等那么多样式,选择广告形式的时候最好能跟当前广告位结合起来。

参考资料

AdMob官网quick-start
AdMob官网原生广告使用
firebase官网admob
googleads demo
googlecodelabs demo
app变现之路,之总结

App变现之Admob原生广告相关推荐

  1. ADMob 原生广告展示不完全,mediaView无图片数据

    最近在接goggle的广告模块,遇到一些杂七杂八的问题,在此进行一些记录. 在接入原生广告时,比如在splash 请求一个原生广告,然后缓存起来,跳转带首页展示一个原生广告,结果遇到了广告展示不完全的 ...

  2. AdMob(app内嵌广告)原生广告

    原生广告 原生格式是一种基于组件的广告格式,可让发布商自由地自定义在应用中如何呈现广告资源,如标题及对操作的调用.通过选择适合自己的字体.颜色和其他详细信息,发布商能够制作出自然而然.毫不唐突的广告演 ...

  3. 小心!选错聚合广告平台,APP变现路上受挫!

    ​ 当开发者接入单一的广告联盟时,往往会可能会遇到变现效率不高的问题.这需要开发者花费大量时间和精力去筛选.对接和管理广告.如果此时选择适合的聚合广告平台,开发者不仅可以降低开发和运营成本,更重要的是 ...

  4. 诸云科技广告智能优化魔方系统,突破app变现增长瓶颈

    自2012年"程序化元年"起,程序化广告落地中国市场接近9年,2020 年球广告主在程序化广告上的投入将占所有数字广告支出的65%.随着广告主越来越重视营销效果,以及优质流量的稀缺 ...

  5. iOS 使用 Admob 获取广告收入

    1.配置项目 进入AdMob官网,注册个账号. 然后点击添加应用: 这个有效每千次展示费用,就是你的广告被人看1000次你会得到的收入.如图展示了1000次,你就会得到10.95美元. 添加完成后,进 ...

  6. 个人APP开发者如何对接聚合广告SDK平台?

    作为个人开发者要想通过APP广告变现是越来越难了,想在应用市场上架APP越来越难,需要提供软著.企业账号等,就连广告平台也不支持个人开发者接入,目前APP广告变现平台的穿山甲.优量汇.快手联盟从21年 ...

  7. 移动广告大战,原生广告才是未来?

    移动广告平台正在成为最受巨头们欢迎的标的.近日游戏发行平台Mobvista完成4000万美元B轮融资,6月百度收购了日本原生广告公司popln.5月百度投资内容推荐平台Taboola,1月阿里控股移动 ...

  8. APP变现渠道该如何选择猫眼聚合SDK用经验为您解答

    目前大概有哪些可供APP方选择的广告变现渠道,APP又该如何选择呢? 本期猫眼带来大概有哪些可供APP方选择的广告变现渠道,APP各阶段适合哪种广告变现渠道供大家选择. 一.广告变现渠道 (1)大网盟 ...

  9. 【资源】什么是原生广告 What Is Native Advertising?

    编者按:本文由DamnDigital授权SocialBeta转载.原生广告日益受到品牌商的关注,这正是因为优质内容对受众的吸引力是传统广告无法比拟的.同时,诸如点击率.逗留时间等指标也被用来衡量原生广 ...

  10. 个人APP开发者必备!直客预算助力APP变现高效策略

    ​在当今的移动互联网时代,应用开发者们面临着用户获取.留存.变现等一系列难题.而其中的广告变现,正是各大开发者最为看重且重视的一种变现方式.然而,广告变现并不简单,其中需要开发者具备多种技能,例如用户 ...

最新文章

  1. oracle自增列问题i,关于oracle中自增列问题
  2. MPB:农科院田健、韩东飞等-​​水稻根系互作功能微生物的筛选方法
  3. FPGA篇(九)关于ASCII码
  4. Python教程:多维列表(元组)碾成一维形式
  5. 安卓移动应用开发实例_移动应用开发协会纳新 ||掌握信息,赢得未来
  6. 使用particles.js实现网页背景粒子特效
  7. https://github.com/nostra13/Android-Universal-Image-Loader
  8. 软件工程师关注的播客
  9. win32application与win32 console application区别何在
  10. 集团企业数据信息系统建设方案
  11. Android增量升级方案
  12. 如何快速辨别工业级POE交换机和普通交换机的不同?
  13. 1024_scsdn_徽章获取日_日常工作记录_百度图片爬取小程序
  14. Python数据可视化,Pyecharts库,外圆环内饼图制作
  15. 人工智能 5.搜索树求解
  16. mysql 基础选择题_MySQL基础之练习题
  17. Eclips运行时概述4
  18. 阿里巴巴2014年校园招聘试题解答
  19. Java基础面经汇总
  20. Qt6-网络关机助手(开机自启版)新增定时关机功能

热门文章

  1. Element DateTimePicker 日期时间选择器 今天日期设置,并获取value值
  2. IMO班聊助力壹米滴答全国“织网” 让每一米、每一秒都更有效率
  3. where 空集_实验七SQL的空值和空集处理.doc
  4. Django3.0使用-国际化语言
  5. 第6章 索引和数据完整性
  6. 用TEXT函数解决日期用连接字符日期变成数字格式的问题
  7. 【五校联考5day2】光棍
  8. GPG入门 - 练习笔记
  9. 成功解决RuntimeError: cuda runtime error (30)
  10. MatrixOne混沌测试之道