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

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

(注)以下のフォームより当社公式メールマガジンにご登録頂くことで
約6時間のFlutter動画講座が無料で受講できます!

(メールマガジンは登録無料・いつでも解除可)

[体験版]
ゼロからのFlutter
(Flutter初級編) 

 

【体験版講座に含まれるもの】
・約70本・約6時間の動画テキスト
・1つの課題アプリのソースコード
・Flutterアプリを作るための「環境構築ライブサポート(Google Meet)」
(「体験版」は全30時間超の「製品版」の約1/6を抜粋した講座です。「製品版」の詳細はこちらから)

 

【当社公式メルマガご登録6大特典】

\約6時間動画講座を無料プレゼント!/
今すぐ無料体験版に申し込む ▶
無料メルマガ登録で講座割引クーポンなど6大特典ゲット!

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

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)

はじめての方へ


みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

みんプロ作成アプリ





みんプロ式動画講座(コア・Flutter)

ゼロからのFlutter(初級編)-はじめてのプログラミングからアプリリリースまで-
Flutter中級編1-Web通信・設計・状態管理・DIの基礎-
Flutter中級編2-Firebase/地図・カメラ連携等の基礎-
Flutter中級編3-広告/アプリ内課金等の基礎-
Flutter中級編4-Webアプリとレスポンシブデザインの基礎-

みんプロ式動画講座(サテライト)

Flutter/Dartトラブルシューティング・小ネタ集(コア初級編受講で無料プレゼント)
ゼロからのGit・GitHub(コマンドラインツールを極力使わないバージョン管理入門)
Flutter/Dartにおける設計・状態管理・DIの解説集
Dart逆引き大辞典
Flutterにおけるテストの基礎

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)
TOP