[英]Admob interstitial ad won't display
我曾经在我未来的应用程序中显示 AdMob 横幅,我想尝试一下插页式广告。
我检查了 AdMob SDK 的实施情况,并复制了他们的示例源,因为这正是我想要的(即活动启动时显示的插页式广告)。
我在模拟器和我的 Galaxy 上尝试过,没有显示任何广告。
这是源代码:
public class Asscreed extends Activity {
private InterstitialAd interstitial;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asscreed);
// Create the interstitial.
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("ca-app-pub-6046034785851961/xxxxxx");
// Create ad request.
AdRequest adRequest = new AdRequest.Builder().build();
// Begin loading your interstitial.
interstitial.loadAd(adRequest);
}
// Invoke displayInterstitial() when you are ready to display an interstitial.
public void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
}
导入没问题,当然也导入了 Google Play 服务库。
我使用这个例子: AdMob Android 指南 - 插页式广告。
有人能告诉我我的代码有什么问题吗?
您应该等待广告加载完毕。 只有这样,您才能调用displayInterstial()方法,该方法将显示广告。
您可以注册一个监听器,它会在加载完成时通知您。
interstitial.setAdListener(new AdListener(){ public void onAdLoaded(){ displayInterstitial(); } });
这是为我做的。
// Begin listening to interstitial & show ads.
interstitial.setAdListener(new AdListener(){
public void onAdLoaded(){
interstitial.show();
}
});
我仍然想知道为什么谷歌的所有家伙都上传了代码,这些代码在一个人跟随他们到点之后就不起作用了。
我有同样的问题。 问题在于清单中未定义 admob 活动。 请确保您的清单文件中有以下活动标签
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("Your Interstitial Id ca-app-pub-46563563567356235/3452455");
AdRequest adRequest1 = new AdRequest.Builder()
.build();
mInterstitialAd.loadAd(adRequest1);
mInterstitialAd.setAdListener(new com.google.android.gms.ads.AdListener() {
@Override
public void onAdLoaded() {
mInterstitialAd.show();
super.onAdLoaded();
}
});
尝试在 onCreate 中对其进行初始化,但仅从事件(例如按钮单击)中调用 show() 方法。
您可以使用此代码,测试 ID 有效:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); //test id
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); //test ad
mInterstitialAd.loadAd(new AdRequest.Builder().build());
btn_test.setOnClickListener(view -> {
showInterstitial();
});
...
}
private void showInterstitial()
{
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
}
在你的 AndroidManifest 你必须把标签
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:theme="@android:style/Theme.Translucent"
tools:replace="android:theme" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="APP_ID" />
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
您没有调用 displayInsterstitial()。
但是你应该做的是调用interstitial的侦听器:
interstitial.setAdListener(this);
然后它将为您的 Activity 实现侦听器,然后将其显示在 onAdLoaded(或其他内容)上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.