0

我正在这个 Android 应用程序上实现插页式横幅,并希望它们在用户通过后退按钮完成()应用程序时出现。通过 AdMob 中介使用单独的 AdMob 插页式广告时,它已经可以正常工作了,这样:

@Override
public void finish() {
    if (isBannerAllowed() && InterstitialBannerFactory.getInsterstitialSingleton().isReady()) {
        InterstitialBannerFactory.getInsterstitialSingleton().show();
    }
            finish();
}

它显示 AdMob 横幅,当用户关闭时,它将以预期的方式完成应用程序。

但是,当我在中介中包含 InMobi 插页式横幅时,它会显示横幅,但会立即完成应用程序(严格来说是应用程序剩余的最后一个活动),而没有给用户查看横幅的机会。它出现并突然结束。

我知道会发生这种情况,因为在某种程度上,最终的 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();
    }
}

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

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

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

问候。

4

1 回答 1

3

InMobi 的插页式广告显示在同一个活动中,而 AdMob 的插页式广告看起来像是在新活动中打开。

要解决此问题,您可以覆盖应用程序中的后退按钮。更多详细信息位于 -覆盖后退按钮以充当主页按钮

例子 -

@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 创建一个新的 Interstitial Object 并在其上调用 load。关闭插页式广告时最终完成应用的代码:

@Override
public void onDismissScreen(Ad ad) {
   finish();
}

-Akshay,SDK 开发人员,InMobi

于 2013-08-30T07:20:32.370 回答