【问题标题】:AdMob interstitial ad only shown onceAdMob 插页式广告仅展示一次
【发布时间】:2022-02-03 17:59:26
【问题描述】:

当广告应在一个会话中第二次或第三次打开时,LogCat 会显示错误消息“尝试使用不同的广告管理器启动新的 AdActivity”。我正在通过我的应用程序主屏幕的 on resume 方法中的意图启动插页式广告:

@Override
public void onResume() {
    super.onResume();

    if(this.getIntent().hasExtra("show_ad")) {
        if(this.getIntent().getExtras().getBoolean("show_ad")) {
            showInterstitialAd();
        }
    }
}

public void showInterstitialAd() {
    mInterstitialAd = new InterstitialAd(this, "ca-app-pub-123456789");
    AdRequest adRequest = new AdRequest();
    mInterstitialAd.loadAd(adRequest);
    mInterstitialAd.setAdListener(this);
}

我可以做些什么来避免这种情况?这个错误信息是什么意思?

【问题讨论】:

    标签: android admob


    【解决方案1】:

    您是否正在检查第一个广告是否已关闭?我有一个类似的问题,第一次后无法加载 admob 的插页式广告。我通过在广告中添加 adListner 解决了这个问题

    // Set an AdListener.
    interstitial.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
          AdRequest adRequest = new AdRequest.Builder().addTestDevice(AD_UNIT_ID).build();
          interstitial.loadAd(adRequest);
        }
    });
    

    【讨论】:

    • 谢谢,我在显示它后立即加载它,它的作用基本相同。现在它可以工作了,为我节省了很多时间,因为日志并不是很有帮助......
    【解决方案2】:

    自上次回答以来已经过去了好几年,现在可能已经过时了。 官方文档没有提到“onAdClosed()”(https://developers.google.com/admob/android/interstitial#kotlin)

    在我的情况下,它是这样工作的,也许会对某人有所帮助:

    private fun initAdd() {
        MobileAds.initialize(this@MainActivity)
        val adRequest = AdRequest.Builder().build()
    
        InterstitialAd.load(this,"ca-app-pub-yyyyyyyyyyyyyyyy/xxxxxxxxxx", adRequest, object : InterstitialAdLoadCallback() {
            override fun onAdFailedToLoad(adError: LoadAdError) {
                mInterstitialAd = null
            }
    
            override fun onAdLoaded(interstitialAd: InterstitialAd) {
                mInterstitialAd = interstitialAd
                mInterstitialAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
                    override fun onAdDismissedFullScreenContent() {
                        initAdd()
                        super.onAdDismissedFullScreenContent()
                    }
                }
            }
        })
    }
    

    【讨论】:

      【解决方案3】:

      当您想展示广告时,您必须每次都加载广告

      添加处理程序

      例如。 rewardedAd.OnAdClosed += HandleRewardedAdClosed;

      public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
      {
         LoadAdRewarded();
      }
      
      
      public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
      {
         LoadAdRewarded();
      }
      
      public void HandleRewardedAdClosed(object sender, EventArgs args)
      {
         LoadAdRewarded();
      }
      

      【讨论】:

        猜你喜欢
        • 2014-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        相关资源
        最近更新 更多