MoPub“onInterstitialFailed”adListener 在离线时不起作用

Posted

技术标签:

【中文标题】MoPub“onInterstitialFailed”adListener 在离线时不起作用【英文标题】:MoPub "onInterstitialFailed" adListener not work when offline 【发布时间】:2021-09-02 02:39:44 【问题描述】:

我在 activities 之间显示 MoPub Interstitial ad

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

情况:如果adnot loadedfailed那么我想用Intent那里移动下一个activity但是当我离线时这个MoPubAdListener 不起作用。

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

当用户按下返回按钮时,就会调用插页式广告

@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 可以正常工作]

任何解决方案:请

【问题讨论】:

【参考方案1】:

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

第一种方式:直接调用adListener

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

第二种方式:通过我们的Activity classimplements 调用 MoPub AdListener

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.
    

快乐编码:)

【讨论】:

以上是关于MoPub“onInterstitialFailed”adListener 在离线时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用适用于 iOS 的 Admob (google) 设置 MoPub 中介?

MoPub 横幅广告

MoPub 替代品

如何在 android studio 中添加 Mopub 广告

在 Android 中设置 MoPub 广告

使用 MoPub 进行中介时看不到任何原生 AdMob 广告