我有一个Android应用程序,使用Googles admob网络显示非页内广告。关于admob的好处是,它的活动是独立的。我可以在我的MainActivity中加载广告,每当admob准备好广告时,即使我不在MainActivity中,它也会显示它。我已经使用isLoaded()
方法来展示广告,并且90%的时间已按预期工作。
但另外10%不是。某些活动应该保持adfree,因为广告会降低游戏质量。如果手机速度较慢或连接速度较慢且加载广告需要一段时间,广告可能会弹出错误的活动。
是否有我可以调用的内容,可以关闭加载的广告并停止加载尚未显示的广告?这只会在两项活动中生效,而其他活动将保持不变。
所以在我的主要活动中,我打电话:
Ads.loadAdMobInterstitial(MainActivity.this);
这是我的处理广告的课程:
public class Ads {
public static InterstitialAd loadAdMobInterstitial(final Context context) {
int admobUnitId = string.admob_ad_unit_id;
final InterstitialAd iAd = new InterstitialAd(context);
iAd.setAdUnitId(context.getString(admobUnitId));
iAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
iAd.show();
}
});
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
iAd.loadAd(adRequest);
return iAd;
}
}
答案 0 :(得分:1)
好的,首先,您应 从interstitialAd.show()
致电onAdLoaded()
。正如您所指出的那样,它会导致糟糕的用户体验。它也可能会禁止您的Admob帐户。
我怀疑你真正想要做的是将你现有的活动重构为碎片并将它们全部托管在你的MainActivity中。这样您就可以获得打开/关闭插页式广告所需的控件。
并确保您在应用中的自然断点处展示插页式广告,而不是onAdLoaded()
。
答案 1 :(得分:0)
在后台加载插页式广告,但不要使用onAdLoaded()方法。
当您在应用中想要显示插页式广告的位置时,请使用此功能:
if (admobInterstitial.isLoaded()) {
admobInterstitial.show();
}
这将仅在加载时显示插页式广告。否则什么都不会发生。
答案 2 :(得分:0)
您可以在活动或片段中的onPause
/ onResume
方法中添加布尔标记。然后检查adLoaded事件,如下所示:
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
if(!paused) {
interstitial.show();
}
}
});