【问题标题】:Facebook Audience network Interstitial ads crashesFacebook Audience 网络插页式广告崩溃
【发布时间】:2018-06-08 22:25:11
【问题描述】:
if (myApp.finterstitialAd3 == null) {
   myApp.finterstitialAd3 = new com.facebook.ads.InterstitialAd(this, getResources().getString(R.string.finterstitial3));
}
if (!myApp.finterstitialAd3.isAdLoaded()) {
    myApp.finterstitialAd3.loadAd();
}

java.lang.RuntimeException:无法启动活动 ComponentInfo{}:java.lang.IllegalStateException:InterstitialAd 在显示时无法加载。确保您的适配器调用了 adapterListener.onInterstitialDismissed()。 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2678) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6165) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 原因:java.lang.IllegalStateException:InterstitialAd 在显示时无法加载。确保您的适配器调用了 adapterListener.onInterstitialDismissed()。 在 com.facebook.ads.InterstitialAd.a(未知来源) 在 com.facebook.ads.InterstitialAd.loadAd(未知来源) 在 com.facebook.ads.InterstitialAd.loadAd(未知来源) 在 "------------".loadInterstitial(VideoDetail.java:121) 在“-------”.onCreate(VideoDetail.java:225) 在 android.app.Activity.performCreate(Activity.java:6687) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1490) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6165) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)

【问题讨论】:

    标签: android facebook interstitial


    【解决方案1】:

    Android 应用上的 Facebook 插页式广告

    Build.Gradle:

    implementation 'com.facebook.android:audience-network-sdk:5.+'
    

    MyAplication.java:

    AudienceNetworkAds.initialize(this);
    

    Manifest.xml:

    <activity
         android:name="com.facebook.ads.AudienceNetworkActivity"
         android:configChanges="keyboardHidden|orientation|screenSize" />
    

    权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    主活动:

    public class MainActivity extends AppCompatActivity {
    
    
        private InterstitialAd facebookInterstitialAds;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            showFacebookInterstitial();
        }
    
        private void showFacebookInterstitial() {
    
            facebookInterstitialAds = new InterstitialAd(this, "Interstitial_Ad_ID");
            facebookInterstitialAds.setAdListener(new InterstitialAdListener() {
                @Override
                public void onInterstitialDisplayed(Ad ad) {
                }
                @Override
                public void onInterstitialDismissed(Ad ad) {
                    finish();
                }
                @Override
                public void onError(Ad ad, AdError adError) {
                }
                @Override
                public void onAdLoaded(Ad ad) {
                }
                @Override
                public void onAdClicked(Ad ad) {
                }
                @Override
                public void onLoggingImpression(Ad ad) {
                }
            });
            facebookInterstitialAds.loadAd();
        }
    
    
        public void showAds(View view){
    
            if (facebookInterstitialAds.isAdLoaded())
                facebookInterstitialAds.show();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (facebookInterstitialAds != null)
                facebookInterstitialAds.destroy();
        }
    }
    

    【讨论】:

      【解决方案2】:

      com.facebook.ads.InterstitialAd 对象有这个问题。我试图在已显示的插页式广告上调用 loadAd()。 我的解决方案是在加载新广告之前销毁旧实例并创建一个新实例:

      if(interstitialAd != null)
          interstitialAd.destroy();
      interstitialAd = new com.facebook.ads.InterstitialAd(context, id);
      

      Facebook 还提供了一种测试广告的新方法,因此为了简化测试,您可以在广告 ID 前添加“IMG_16_9_APP_INSTALL#”(这将确保您的广告请求始终被填充以进行测试),然后将其删除以进行发布版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多