Admob interstitial在没有项目更改的情况下停止工作

时间:2016-08-02 09:29:21

标签: android admob google-play-services interstitial

我正在开发一个新的应用程序,并使用Admob进行插页式广告。我在1-2个月之前对广告进行了编码,一切都很棒。这些天我即将推出,但我注意到广告从未显示过,因为可能会持续两周。所以我决定调试。一切似乎没有例外,但Admob SDK总是报告未加载插页式广告,尽管SDK会调用回调onAdLoaded

这是我的配置,我省略了不相关的东西:

buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

dependencies {
    compile "com.android.support:support-v4:18.0.+"
    compile "com.google.android.gms:play-services-analytics:9.0.2"
    compile 'com.google.android.gms:play-services-ads:9.0.2'        
}

apply plugin: 'com.google.gms.google-services'

以下是具有奇怪行为的代码段:

private com.google.android.gms.ads.InterstitialAd mInterstitialAd; 

public void loadInterstitial() {
    mInterstitialAd = new InterstitialAd(context);
    mInterstitialAd.setAdUnitId(adUnitId);
    mInterstitialAd.setAdListener(new AdListener() 
    {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();

            Log.d(TAG, "is loaded = " + mInterstitialAd.isLoaded()); // FALSE!!!
        }
    }
}

public void showInterstitial() {
    if(mInterstitialAd.isLoaded()) { // ALWAYS FALSE!!!
        mInterstitialAd.show();
    } else {            
        loadInterstitial(); // FAILED TO LOAD AD with error code = 1
    }
}

当我拨打showInterstitial之后,在我拨打loadInterstitial并且我看到onAdLoaded已被调用后,检查是否加载了插页式广告始终返回false ,再次调用loadInterstitial方法,现在Admob SDK给出了错误,即错误代码= 1无法加载广告。

已经在多台设备上对此进行了测试,并且与广告或Google Play服务库相关的项目没有变化,它只是停止了工作。

您是否知道可能出现的问题或我可以做些什么来更成功地调试这些错误?

非常感谢。

1 个答案:

答案 0 :(得分:2)

添加最新的gradle

compile 'com.google.android.gms:play-services-ads:9.2.1'  

并删除

dependencies {
        ...
        classpath 'com.google.gms:google-services:3.0.0'
       }

还删除插件

apply plugin: 'com.google.gms.google-services'

<强>更新

我认为你遗失了AdRequest

   InterstitialAd mInterstitialAd = new InterstitialAd(mContext);
   AdRequest adRequest = new AdRequest.Builder().build();

   mInterstitialAd.setAdUnitId(mContext.getString(R.string.full_screen_id));
   mInterstitialAd.loadAd(adRequest);