Facebook Ads错误:您无法在加载状态下为广告调用show()

Awa*_*eed 5 android facebook-ads-api

我正在按照官方文档将Facebook Ads集成到我的应用程序中。但是当我运行我的应用程序时,出现以下异常

java.lang.IllegalStateException: You can't call show() for ad in state LOADING. You can change Integration Error mode by setting AdSettings.setIntegrationErrorMode()
    at com.facebook.ads.internal.c.a.a(Unknown Source:122)
    at com.facebook.ads.internal.c.f.a(Unknown Source:6)
    at com.facebook.ads.InterstitialAd.show(Unknown Source:2)
    at tech.grapegames.pdfreader.ui.MainActivity.moveToFragment(MainActivity.java:115)
    at tech.grapegames.pdfreader.ui.HomeFragment.onClick(HomeFragment.java:85)
    at android.view.View.performClick(View.java:6897)
    at android.view.View$PerformClick.run(View.java:26101)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Run Code Online (Sandbox Code Playgroud)

下面是我的代码

private com.facebook.ads.InterstitialAd fbInterstitialAd;
fbInterstitialAd = new com.facebook.ads.InterstitialAd(this, getString(R.string.fb_interstitial_ad_id));
fbInterstitialAd.loadAd();
Run Code Online (Sandbox Code Playgroud)

我在下面显示它

if (fbInterstitialAd.isAdLoaded() && !fbInterstitialAd.isAdInvalidated()) {
fbInterstitialAd.show();//This line causes the crash
Run Code Online (Sandbox Code Playgroud)

这是我在build.gradle中添加的依赖项

implementation 'com.facebook.android:audience-network-sdk:5.+'
Run Code Online (Sandbox Code Playgroud)

小智 5

您正在使用错误的依赖项。替换以下依赖项:

implementation 'com.facebook.android:audience-network-sdk:5.+'
Run Code Online (Sandbox Code Playgroud)

implementation 'com.facebook.android:audience-network-sdk:5.0.1'
Run Code Online (Sandbox Code Playgroud)


Tal*_*alu 5

您好:您需要检查您的广告是否为空,以及是否在显示之前已加载:

if(fbInterstitialAd != null && fbInterstitialAd.isAdLoaded()) fbInterstitialAd.show();