【问题标题】:AdMob keeps app stuck in onPauseAdMob 让应用卡在 onPause
【发布时间】:2018-08-05 23:01:37
【问题描述】:

我在我的应用中使用 AdMob 插页式广告。如果我遵循这组步骤:

  • 显示插页式广告
  • 用户点击广告,重定向到我的应用之外(例如,转到 Google Play)
  • 用户选择“返回”按钮返回广告
  • 用户点击“x”按钮关闭广告

用户以黑屏返回我的应用程序。经过一些故障排除后,我发现我的应用响应的最后一个事件是 onPause; onResume 随后没有被调用。因此,我的应用不知道重新加载资源并恢复游戏。

作为一种解决方法,我将以下代码放入 onAdLeftApplication():

        @Override
        public void onAdLeftApplication() {
            super.onAdLeftApplication();
            s_activity.finish();
        }

这样,如果用户立即关闭广告,他只是返回游戏,但如果他决定点击广告,我的游戏将关闭,他必须重新启动 - 不漂亮,但比冻结挂起更好。

谁能推荐一个更好的方法来处理这个问题?我应该在 onAdLeftApplication 中做些什么来确保我的代码在广告关闭后收到 onResume 消息吗?还有其他我应该听的事件吗?

一个脚注,我已经向这个应用程序添加了 firebase,不知道这究竟意味着什么,但它应该可以做一些很棒的事情,而且我没有看到任何额外的说明来说明在这种情况下如何响应 admob 插页式广告。

提前致谢!

【问题讨论】:

    标签: android admob interstitial


    【解决方案1】:

    试试这个可能对你有帮助。

    public void loadInterstitial() {
            // Instantiate an InterstitialAd object
            AdSettings.addTestDevice("350cf676a5848059b96313bdddc21a35");
            interstitialAd = new InterstitialAd(MainActivity.this,"222591425151579_222592145151XXX");
            interstitialAd.loadAd();
            // Set listeners for the Interstitial Ad
            interstitialAd.setAdListener(new InterstitialAdListener() {
                @Override
                public void onInterstitialDisplayed(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
    
                @Override
                public void onInterstitialDismissed(Ad ad) {
                    Log.v("OkHttp", ad.toString());    
                }
    
                @Override
                public void onError(Ad ad, AdError adError) {
                    Log.v("OkHttp", ad.toString() + "   " + adError.getErrorCode() + "   " + adError.getErrorMessage());
                }
    
                @Override
                public void onAdLoaded(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                    showInterstitial();
                }
    
                @Override
                public void onAdClicked(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
    
                @Override
                public void onLoggingImpression(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
            });
        }
    
        public void showInterstitial() {
            interstitialAd.show();
        }
    

    现在,在点击关闭或 AdLoaded 后,执行您接下来要执行的代码以继续游戏,您将获得所有事件的侦听器,并且您可以为每个事件设置不同的情况。

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多