显示InMobi interstitial on activity finish()

时间:2013-08-28 14:13:19

标签: android interstitial inmobi

我正在此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();
    }
}

但它没有生效,行为是相同的,应用程序没有退出。

有没有人有更聪明的解决方案?

顺便说一下,我正在使用所有相关文件库的最新版本。

问候。

1 个答案:

答案 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