MoPub“onInterstitialFailed”广告监听器在离线时不起作用 解决方案:

问题描述

我正在展示 MoPub Interstitial adactivities

当我的设备在线/连接到互联网时。然后adListener工作 正常。这在设备离线时不起作用。

情况:如果 ad not loadedFailed 那么我想在那里使用 Intent 移动下一个 activity但是这 MoPubAdListener 在我离线时不起作用。

mInterstitial.load() 方法中的插页式 onCreate

用户按下后退按钮时,插页式广告被调用

@Override
    public void onBackpressed() {
        try {
            customProgressDialogForAd.show(getSupportFragmentManager(),"before interstitial");
            funInterstitialLoadShow();
        } catch (Exception e){
            QuestionActivity.super.onBackpressed();
        }
        //super.onBackpressed();
    }

间隙调用功能

private void funInterstitialLoadShow(){
        mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() {
            @Override
            public void onInterstitialLoaded(MoPubInterstitial moPubInterstitial) {
                Toast.makeText(QuestionActivity.this,"adloaded",Toast.LENGTH_SHORT).show();
                mInterstitial.show();
                customProgressDialogForAd.dismiss();
            }

            @Override
            public void onInterstitialFailed(MoPubInterstitial moPubInterstitial,MoPubErrorCode moPubErrorCode) {
                customProgressDialogForAd.dismiss();
                QuestionActivity.super.onBackpressed();
                
                // PROBLEM HERE: THIS fun Now work when Device is OFFLINE(NO INTERNET);
            }

            @Override
            public void onInterstitialShown(MoPubInterstitial moPubInterstitial) {
            }

            @Override
            public void onInterstitialClicked(MoPubInterstitial moPubInterstitial) {
                
            }
            @Override
            public void onInterstitialdismissed(MoPubInterstitial moPubInterstitial) {
                customProgressDialogForAd.dismiss();
                QuestionActivity.super.onBackpressed();

            }
        });
    }

问题:当设备未连接到互联网时,onInterstitialFailed 不起作用。 [另一方面,如果设备中的互联网已打开,则 sdk 正常工作,例如,如果我们关闭广告,则 onInterstitialdismissed 工作]

任何解决方案:请

解决方法

调用MoPub的AdListener有两种方式/方法/类型。

第一种方式:直接调用 adListener

mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() { .... }

第二种方式:在我们的 AdListener

中通过 implements 调用 MoPub Activity class
public class QuestionActivity extends AppCompatActivity implements MoPubInterstitial.InterstitialAdListener { ... }

解决方案:

您没有将 mInterstitial.load()adListener 一起使用。如果不使用 AdListener 添加这行代码,Adlistener 的函数将不起作用因为该行是 adListener 的一部分。

     // ====this function (with moPub ad listener)== called when use click back button

    public void funInterstitialAdListener(){
        mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() {
            @Override
            public void onInterstitialLoaded(MoPubInterstitial moPubInterstitial) {
                Log.d(TAG,"onInterstitialLoaded: funAd loaded");
                customProgressDialogForAd.dismiss();
                mInterstitial.show();
            }

            @Override
            public void onInterstitialFailed(MoPubInterstitial moPubInterstitial,MoPubErrorCode moPubErrorCode) {
                customProgressDialogForAd.dismiss();
                QuestionActivity.super.onBackPressed();
                Log.d(TAG,"onInterstitialFailed: ad failed to load");
            }

            @Override
            public void onInterstitialShown(MoPubInterstitial moPubInterstitial) {
            }

            @Override
            public void onInterstitialClicked(MoPubInterstitial moPubInterstitial) {

            }
            @Override
            public void onInterstitialDismissed(MoPubInterstitial moPubInterstitial) {
                Log.d(TAG,"onInterstitialDismissed: Done");
                QuestionActivity.super.onBackPressed();
            }
        });
        // If we not use this mInterstitial.load() code,then function of AdListener not work. 
        mInterstitial.load();
        // Must use this upper line with adListener. This line is part of AdListener.
    }

快乐编码 :)