Android - частота сбоев увеличилась после интеграции сети аудитории Facebook. Как это исправить? - PullRequest
0 голосов
/ 27 апреля 2018

Мы интегрировали FAN всего месяц назад, и он начал демонстрировать огромный рост Crash Rate.

Наше приложение содержит рекламные баннеры, рекламные вставки и нативную рекламу.

Вот подробный журнал об этой аварии:

java.lang.NullPointerException: 
at com.facebook.ads.j.d (Unknown Source)
at com.status.activities.VideoDetailActivity$17.a (Unknown Source)
at com.facebook.ads.j$1.a (Unknown Source)
at com.facebook.ads.internal.a$3.a (Unknown Source)
at com.facebook.ads.internal.b.u$1.a (Unknown Source)
at com.facebook.ads.internal.b.t$2.a (Unknown Source)
at com.facebook.ads.internal.b.t$2.a (Unknown Source)
at com.facebook.ads.internal.i.r.b (Unknown Source)
at com.facebook.ads.internal.i.r.a (Unknown Source)
at com.facebook.ads.internal.view.v.a (Unknown Source)
at com.facebook.ads.internal.view.c.c.b.setVideoState (Unknown Source)
at com.facebook.ads.internal.view.c.c.b.onPrepared (Unknown Source)
at android.media.MediaPlayer$EventHandler.handleMessage 
(MediaPlayer.java:3021)
at android.os.Handler.dispatchMessage (Handler.java:110)
at android.os.Looper.loop (Looper.java:203)
at android.app.ActivityThread.main (ActivityThread.java:6361)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:924)

Screenshot from play console

This shows how crashes increased after integrating facebook audience network:

EDIT1:

Вот код для промежуточной рекламы от VideoDetailActivity:

interstitialAd = new com.facebook.ads.InterstitialAd(mContext,

getResources().getString(R.string.fb_interstitial_id));
            interstitialAd.loadAd();
            try {
                interstitialAd.setAdListener(new AbstractAdListener() {
                    @Override
                    public void onAdLoaded(Ad ad) {
                        super.onAdLoaded(ad);
                        String isShow = mFirebaseRemoteConfig.getString("show_vs");
                        if (isShow.equalsIgnoreCase("true")) {
                            if (System.currentTimeMillis() - QuotesUtils.getLastSavedDateForAds(mContext) >
                                    Long.parseLong(mFirebaseRemoteConfig.getString("duration"))) {
                                if (interstitialAd.isAdLoaded())
                                    interstitialAd.show();

                                QuotesUtils.setLastSavedDateForAds(mContext, System.currentTimeMillis());
                            }
                        }
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
                Crashlytics.log("FBAd>>>" + e.getMessage());
            }

Вот код для баннерной рекламы от VideoDetailActivity:

adViewFB = new com.facebook.ads.AdView(mContext,getResources().getString(R.string.fb_banner_id),AdSize.BANNER_HEIGHT_50);
            final LinearLayout adContainer = 
findViewById(R.id.banner_container);
            adContainer.addView(adViewFB);
            adViewFB.loadAd();
            adViewFB.setAdListener(new AbstractAdListener() {
                @Override
                public void onAdLoaded(Ad ad) {
                    super.onAdLoaded(ad);
                    adContainer.setVisibility(View.VISIBLE);
                }
            });
...