首页 > 解决方案 > AdMob 让应用卡在 onPause

问题描述

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

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

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

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

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

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

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

提前致谢!

标签: androidadmobinterstitial

解决方案


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

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 后,执行您接下来要执行的代码以继续游戏,您将获得所有事件的侦听器,并且您可以为每个事件设置不同的情况。


推荐阅读