Closed9

リリース前レポートで安定性のエラーがあった件(MobileAds.initialize()の問題)

enoiuenoiu

Google Play Consoleの内部テストでリリースを作成し公開したところ、リリース前レポートで安定性のエラーがあった。
スタックトレースでは、以下の通り。

executing service com.enoiu.scorepdf/com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService

別のエラーもあった。

executing service com.enoiu.scorepdf/com.google.firebase.sessions.SessionLifecycleService

3つのデバイス(motorola Motorola G20, samsung Galaxy S23 Ultra, google Pixel 6)で検出されたらしい。

enoiuenoiu

このスタックトレースではよくわからなかったので、FirebaseのCrashlyticsを確認したところ、以下のスタックトレースを確認した。

PlatformException(error, MobileAds.initialize() must be called prior to setting app muted state., null, java.lang.IllegalStateException: MobileAds.initialize() must be called prior to setting app muted state.
enoiuenoiu

muteにする前にMobileAds.initialize()を呼び出しているのが問題らしい。

ということで、MobileAds.instance.initialize();にawaitをつけた。

- MobileAds.instance.initialize();
+ await MobileAds.instance.initialize();
MobileAds.instance.setAppMuted(true);

これを内部テストにリリースすると、エラーは発生しなくなった。

(追記:パフォーマンスの問題は発生していた。(初めて起動する際に時間がかかる))

enoiuenoiu

一度awaitを外して内部リリースに提出したが、このスクラップの最初に書いたようにリリース前レポートで安定性のエラーが報告された。
そのため、

MobileAds.instance.initialize().then((_) {
  MobileAds.instance.setAppMuted(true);
});

としてみたが、同様に安定性のエラーが報告された(ただし、報告される端末の数は1つだけになり、このエラーはCrashlyticsでは表示されなかった)。

enoiuenoiu

一旦、MobileAds.instance.setAppMuted(true);を消してMobileAds.instance.initialize();だけにしてみた。
すると、なんと9件の安定性のエラーが報告された。
また、Crashlyticsで確認したところ、今までのエラーはほぼクラッシュイベントの発生だったが、今回はすべてANRイベントの発生だった。

ということで、google_mobile_adsでのIsusesでANRに関する問題を確認したところ、以下の報告が。
https://github.com/googleads/googleads-mobile-flutter/issues/1019

enoiuenoiu

すると、リリース前レポートで、安定性の問題もパフォーマンスの問題も検知されなかった。

enoiuenoiu

なお、結局MobileAds.instance.setAppMuted(true);はなくして、AdMobの広告の種類で動画のチェックを外した。
そのため、MobileAds.instance.setAppMuted(true);がある場合でも問題が解決したかどうかは未確認。

このスクラップは2024/11/25にクローズされました