[Flutter/Android]Admob広告使用時に発生する可能性のあるANR(Application Not Responding)の回避方法

このページには広告が含まれる場合があります。

 

Flutterで作成したAndroidアプリでAdMob広告を実装する際に、アプリが応答しなくなる「ANR(Application Not Responding)」エラーが発生する可能性があるというトラップがあることが報告されています。

We heard your feedback via Play Console crash reports regarding Application Not Responding (ANRs) errors related to the Google Mobile Ads SDK. 

(Google Mobile Ads SDK に関連する Application Not Responding (ANRs) エラーについて、Play Console のクラッシュレポートからご意見をいただきました。)

(こんな意味不明なエラーがリリース前レポートで出ます)

"main" tid=1 Blocked
  at com.google.android.gms.ads.nonagon.a.z (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:3)
  at com.google.android.gms.ads.nonagon.a.a (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:9)
  at com.google.android.gms.ads.nonagon.shim.ab.<init> (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:6)
  at com.google.android.gms.ads.ChimeraAdManagerCreatorImpl.newAdManagerByType (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:127)
  at com.google.android.gms.ads.internal.client.bl.bV (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:90)
  at m.ang.onTransact (:com.google.android.gms.policy_ads_fdr_dynamite@243220707@243220703034.668972300.668972300:21)
  at android.os.Binder.transact (Binder.java:1064)
  at nuk.fB (:com.google.android.gms@243934029@24.39.34 (190400-683343373):8)
  at com.google.android.gms.ads.internal.client.ao.newAdManagerByType (:com.google.android.gms@243934029@24.39.34 (190400-683343373):24)
  at com.google.android.gms.ads.AdManagerCreatorImpl.newAdManagerByType (:com.google.android.gms@243934029@24.39.34 (190400-683343373):48)
  at com.google.android.gms.ads.internal.client.ap.fx (:com.google.android.gms@243934029@24.39.34 (190400-683343373):90)
  at nul.onTransact (:com.google.android.gms@243934029@24.39.34 (190400-683343373):102)
  at android.os.Binder.transact (Binder.java:1064)
  at com.google.android.gms.internal.ads.zzayl.zzdb (zzayl.java)
  at com.google.android.gms.ads.internal.client.zzbz.zze (zzbz.java)
  at com.google.android.gms.ads.internal.client.zzk.zza (zzk.java)
  at com.google.android.gms.ads.internal.client.zzam.zzc (zzam.java)
  at com.google.android.gms.ads.internal.client.zzbb.zzf (zzbb.java)
  at com.google.android.gms.ads.internal.client.zzbb.zzd (zzbb.java)
  at com.google.android.gms.ads.internal.client.zzel.zzm (zzel.java)
  at com.google.android.gms.ads.BaseAdView.loadAd (BaseAdView.java)
  at io.flutter.plugins.googlemobileads.FlutterBannerAd.load (FlutterBannerAd.java)
  at io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.onMethodCall (GoogleMobileAdsPlugin.java)
  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage (MethodChannel.java)
  at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler (DartMessenger.java)
  at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0 (DartMessenger.java)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7839)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
・・・

 

ANR(Application Not Responding)とは

「ANR」とは「Application Not Responding」の略で、アプリが応答しなくなる現象です。

広告を使うとアプリがフリーズしてしまうことがあるんですが、これ、ユーザーからするとかなり不便ですよね。

「応答がありません。アプリを閉じますか?」なんて表示が出たら、ユーザーはすぐにアンインストールしてしまうかも……。

実は、このANRエラーは、Androidでの広告処理(初期化や広告の読み込み)がUIスレッドをブロックしてしまうことが原因のようなんです。

つまり、広告の読み込み中にメイン画面が止まってしまい、ユーザーが操作できなくなるという減少なんです。

 

ANRエラーの回避方法

Androidのマニフェストファイルに、以下の2つのフラグを設定すれば解決します。

  • OPTIMIZE_INITIALIZATION(Google Mobile Ads SDK の初期化を最適化する)
  • OPTIMIZE_AD_LOADING(広告の読み込みを最適化する)
<manifest>
  <application>
    <!-- 初期化の最適化を有効化 -->
    <meta-data
        android:name="com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
        android:value="true"/>
    <!-- 広告読み込みの最適化を有効化 -->
    <meta-data
        android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
        android:value="true"/>
  </application>
</manifest>

(詳しくは、以下の動画で説明していますので、よろしければご覧ください)

こんな記事も読まれています

人気No.1

前向きな気持ちになれる 占星術・タロットリーディング

あすコロ式・相談サロン 【ナビるやん】

人に言えない悩みから使命・運勢診断まで、あなたに寄り添いながら“ナビゲート”する、あすコロ人気No.1のオンライン相談サロン。占星術・心理学・タロットの叡智を活かし、普段認識していない「潜在意識」にアクセスしてあなたの気づいていない可能性を拓かせ、明日から前向きに歩めるようになる60分のリーディングセッション。

今すぐ詳細を見る(メルマガ登録で初回半額) ▶

TOP