3

我在我的 android 应用程序中使用 Admob 的插页式广告。interstitialAd.show() 在应用程序的某些事件中调用。一切正常,但广告中有一个烦人的用例。

如果用户在广告显示或广告活动(即用户点击广告)处于活动状态时单击主页,则在切换回应用程序后将显示广告或广告活动。我更喜欢显示应用程序(即主要活动位于活动堆栈的顶部),因为它看起来让用户首先看到广告感到困惑。

我试图捕获所有活动回调(例如 onStart()、onResume() ...),但显然该应用程序在此用例中永远不会成为前台。由于广告活动是通过调用 interstitialAd.show() 启动的,因此我所知道的管理活动堆栈的技巧也无济于事。

有谁知道如何自动关闭广告并将应用程序主要活动返回到顶部?

谢谢。

4

3 回答 3

10

如果有人正在寻找这个问题的答案。如果用户在显示插页式广告时点击主页按钮,这会阻止它在用户再次启动应用程序时显示。

在您的 AndroidMainifest.xml 文件中添加: android:noHistory="true" 到 AdActivity 活动

像这样:

<activity android:name="com.google.android.gms.ads.AdActivity"
   android:noHistory="true"
 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
</activity>

到目前为止,这似乎有效。

于 2015-02-02T01:59:40.873 回答
1

这可能为时已晚,但您无法自动关闭广告。围绕它的一个技巧是,在您的 onBackPressed() 方法中,在用户点击后退按钮关闭广告后,您将用户返回到应用程序并使用 Toast 方法,提醒用户再次单击后退按钮以退出应用程序。这种方法也满足了谷歌的建议,即您允许用户知道哪个应用程序正在显示广告,因此您在最终关闭之前返回应用程序。就用户体验而言,它可能不是最好的,但确实可以解决问题。下面是一个示例代码。

boolean doubleBackToExitPressedOnce = false;
public void onBackPressed() {
    if(doubleBackToExitPressedOnce) {
       super.onBackPressed();
       return;
    }

    if(backPressAd.isLoaded()) {
        backPressAd.show();
        backPressAd.setAdListener(new AdListener(){
           @Override
           public void onAdClosed() {
              doubleBackToExitPressedOnce = true;
              Toast.makeText(getApplicationContext(), "Click BACK again to exit", Toast.LENGTH_LONG).show();
              backPressAd.loadAd(new AdRequest.Builder().build());
           }
        });
    } else {
      finish();
    }
}
于 2017-12-05T18:38:15.570 回答
0

我不认为有解决办法。

本质上,Ad.show() 需要在新任务中打开广告,因此它不是当前任务/应用程序的活动列表的一部分。

于 2013-08-04T21:46:38.040 回答