【问题标题】:Cancel/Pause/Stop any Interstitial Ads取消/暂停/停止任何插页式广告
【发布时间】:2014-09-15 09:38:11
【问题描述】:

我有一个使用 Google 的 admob 网络显示插页式广告的 Android 应用。 admob 的好处是,它的活动独立。我可以在我的 MainActivity 中加载广告,只要 admob 准备好广告,它就会显示它,即使我不再在 MainActivity 中。我已经使用 isLoaded() 方法来展示广告,并且 90% 的时间已经按预期工作了。

但其他 10% 不是。有些活动应该保持无广告,因为广告会降低游戏的质量。如果手机速度慢或连接速度慢并且加载广告需要一段时间,则广告可能会在错误的活动中弹出。

我可以调用什么东西来关闭加载的广告并停止加载尚未显示的广告吗?这只会对两个活动生效,而其他活动将保持原样。

所以在我的主要活动中我称之为:

Ads.loadAdMobInterstitial(MainActivity.this);

这是我处理广告的课程:

public class Ads {

    public static InterstitialAd loadAdMobInterstitial(final Context context) {

            int admobUnitId = string.admob_ad_unit_id; 

            final InterstitialAd iAd = new InterstitialAd(context);
            iAd.setAdUnitId(context.getString(admobUnitId));

            iAd.setAdListener(new AdListener() {
                @Override
                public void onAdLoaded() {
                        iAd.show();
                }

            });     

            AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();

            iAd.loadAd(adRequest);

            return iAd;
        }
}

【问题讨论】:

    标签: android admob


    【解决方案1】:

    好的,首先,您应该绝不onAdLoaded() 致电interstitialAd.show()。正如您所指出的,这将导致糟糕的用户体验。您的 Admob 帐户也可能会被封禁。

    我怀疑您真正想做的是将现有的活动重构为片段并将它们全部托管在您的 MainActivity 中。这样,您就可以控制插页式广告的开/关。

    并确保您从应用中的自然断点而不是从onAdLoaded() 显示插页式广告。

    【讨论】:

    • 好吧,现在将活动重构为片段不是一种选择,这太耗时了。反正除了这两个activity之外,在app的任何地方展示广告都可以,所以没有办法吗?
    • 不是你想要的方式。
    【解决方案2】:

    您可以在活动或片段的onPause/onResume 方法中添加布尔标志。然后像这样检查 adLoaded 事件:

    interstitial.setAdListener(new AdListener() {
                @Override
                 public void onAdLoaded() {
                super.onAdLoaded();
                if(!paused) {
                    interstitial.show();
                }
            }
        });
    

    【讨论】:

      【解决方案3】:

      在后台加载您的插页式广告,但不要使用 onAdLoaded() 方法。

      当您在应用程序中想要显示插页式广告的位置时,请使用:

      if (admobInterstitial.isLoaded()) {
          admobInterstitial.show();
      }
      

      只有在加载时才会显示插页式广告。否则什么都不会发生。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        相关资源
        最近更新 更多