注册AdMob账号
上外网,注册admob账号
https://admob.google.com/home/
添加应用
注册后登录,并且添加一个新应用,平台选中android,之后的设置根据需要

应用添加后你会获得一个应用id
添加广告单元
应用建立后,点击广告单元,新建一个广告单元

我选中了插页广告

之后根据自己需要进行配置展现广告的内容,频率等
创建好广告单元后,你会得到对应的广告单元 ID。
Android程序配置
导入SDK
在项目级别的build.gradle文件中添加以下代码
buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
在模块级别的build.gradle中添加以下代码
dependencies {
compile 'com.google.android.gms:play-services-ads:11.2.0'
}
在AndroidManifest.xml中添加以下代码,其中ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy替换成你自己的应用id
<manifest>
<application>
<!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>在Activity的Oncreate函数中,初始化谷歌移动广告 SDK
添加测试广告
以插页广告为例,如何进行显示
final InterstitialAd iad = new InterstitialAd(this);
//用于测试的广告
//AdRequest adRequest = new AdRequest.Builder().addTestDevice("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx").build();
AdRequest adRequest = new AdRequest.Builder().build();
iad.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy");
iad.loadAd(adRequest);
//设置监听器,广告加载完成时进行显示
iad.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
super.onAdLoaded();
if(iad.isLoaded()){
iad.show();
}
}
});上面代码setUnitId方法里面的就是插页单元广告的ID。填入你的对应的单元广告id 通过AdRequest.Builder().addTestDevice()方法显示测试广告,参数会在logcat的程序日志里面看到
Use AdRequest.Builder.addTestDevice("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") to get test ads on this device.
程序运行后会显示测试广告

正式发布时直接使用AdRequest.Builder().build();方法就可以了,就会显示正式广告

为什么应用能够正常显示测试广告而不显示正式广告
查看程序日志
W/Ads: Received error HTTP response code: 400
W/Ads: There was a problem getting an ad response. ErrorCode: 0
W/Ads: Failed to load ad: 0
这是因为没有添加收款信息造成的,在Admob中点击收款,添加收款用户就可以了
I/Ads: No fill from any mediation ad networks.
I/Ads: No fill from ad server.
W/Ads: Failed to load ad: 3
并不是任何时候服务器都会有广告,在注册应用后需要等待一段时间才会有广告被投放。
可以在admob中查看数据,请求了124次,而只有一次展示了广告,因为国内admob广告较少的缘故

通过中介功能,创建中介组,得到更多广告的机会
