1

我正在显示 MoPubInterstitial 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工作]

任何解决方案:请

4

1 回答 1

1

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

第一种方式:直接调用adListener

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

第二种方式:AdListener通过implements我们的调用 MoPubActivity class

public class QuestionActivity extends AppCompatActivity implements MoPubInterstitial.InterstitialAdListener { ... }

解决方案:

您没有使用mInterstitial.load()with 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.
    }

快乐编码:)

于 2021-07-27T19:46:21.060 回答