我正在此Android应用上实施插页式横幅广告,并希望它们在用户完成后通过后退按钮显示应用。通过AdMob中介使用solo AdMob interstitial时,它已经正常工作了:
@Override
public void finish() {
if (isBannerAllowed() && InterstitialBannerFactory.getInsterstitialSingleton().isReady()) {
InterstitialBannerFactory.getInsterstitialSingleton().show();
}
finish();
}
它会显示AdMob横幅,当用户解散时,它会以预期的方式完成应用。
但是,当我在调解中包含一个InMobi interstital横幅时,它会显示横幅,但会立即完成应用程序(严格来说是应用程序的剩余最后一个活动),而不会让用户查看横幅。它出现并突然结束。
我知道发生这种情况是因为在某种程度上,结尾处的finish()与InMobi插页式无关。我已经尝试过这样的事情:
@Override
public void finish() {
setAppFinishing(true);
if (isBannerAllowed() && InterstitialBannerFactory.getInsterstitialSingleton().isReady()) {
InterstitialBannerFactory.getInsterstitialSingleton().show();
}
}
注意开始时的setAppFinishing(true)和结束时删除finish()。
它变得更好,因为它显示了InMobi插页式广告。但是阻止用户通过后退按钮退出应用程序。
然后我在AdListerner的onDismissScreen()上尝试了这个以补充上面的代码:
@Override
public void onDismissScreen(Ad ad) {
// prepares the next
if (!isAppFinishing()) {
InterstitialBannerFactory.loadAd();
}
else {
finish();
}
}
但它没有生效,行为是相同的,应用程序没有退出。
有没有人有更聪明的解决方案?
顺便说一下,我正在使用所有相关文件库的最新版本。
问候。
答案 0 :(得分:3)
InMobi的插页式广告显示在同一个活动中,而AdMob的插页式广告就像是在新活动中开放。
要解决此问题,您可以覆盖应用中的后退按钮。更多详细信息,请参阅 - Override back button to act like home button
示例 -
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
if (interstitial.isReady()){
interstitial.show();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
注意:onCreate会创建一个新的非页内对象并在其上调用负载。 在插页式广告关闭时最终完成应用的代码:
@Override
public void onDismissScreen(Ad ad) {
finish();
}
-Akshay,SDK开发人员,InMobi