[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>

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

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

イチオシ

40代から感じるモヤモヤを解消できる 無料動画セミナー

あすコロ式・40代からの人生アップデート【新】戦略

アラフォーでキャリアを失ったバリバリ左脳人間・スピリチュアル耐性ゼロの元金融マンが、人生どん底から立ち上がる過程でたどり着いた「人生再構築メソッド」。40代・50代を過ぎて多くの人が感じる「このままでいいんかな?」「この先どうしたらいいかわからない」というモヤモヤを解消し、人生後半戦をアップデートさせる【新】戦略。

今すぐ無料で動画セミナー(80分)を見る ▶
GAMBO(願望) 願望実現・目標達成の
17秒 / 68秒ワーク
GAMBO(願望) 引き寄せ難民だったぼくの挫折経験から生まれた誰でもできる願望実現サポートアプリ。かの有名な17秒/68秒ワークを独自の視覚化メソッドで簡単実践。
App Store / Google Play 詳しく見る →
Meiso(瞑想) 鐘音と自然音で
5分からのマインドフルネス
Meiso(瞑想) 初心者でも“迷わず続けられる”ことにこだわった、完全無料の瞑想アプリ。画面のガイドに従うだけで呼吸のリズムが整い、最短5分から瞑想を実践できます。
App Store / Google Play 詳しく見る →
小学生からの英検®単語 A ふりがな・音声付き
英検単語1日5分トレーニング
小学生からの英検®単語 ありそうでなかった!ふりがな付き英検®単語トレーニングアプリ!1日たった5分!スキマ時間を活用して、英検®頻出単語を効率的に習得。お子様の一人学習にも安心設計。
App Store / Google Play 詳しく見る →
オボエルンジャー レトロゲームで
nバック脳トレ
オボエルンジャー 科学的脳力開発法「Nバック課題」をファミコン風8bitレトロゲームにアレンジした新感覚脳トレアプリ。記憶力・感情コントロール力・集中力の向上に。
App Store / Google Play 詳しく見る →
ゴイコイコイ 超高速フラッシュカードで
語彙習得
ゴイコイコイ 日常語1400語を視覚的に学べる、高速読み上げフラッシュカード式の語彙トレーニングアプリ。知育教室で行われるフラッシュカード学習を、家庭で“手軽に・安価に・正確に”再現。
App Store / Google Play 詳しく見る →

TOP