Исключение
Мы видим много сбоев в Google Play, связанных с Firebase.
Исключение происходит двумя способами:
- com.google.firebase.messaging.MessagingAnalytics.logNotificationDismiss
- com.google.firebase.messaging.MessagingAnalytics.logNotificationReceived
Пример трассировки стека:
at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
at com.google.firebase.messaging.MessagingAnalytics.zza (Unknown Source)
at com.google.firebase.messaging.MessagingAnalytics.logNotificationReceived (Unknown Source)
at com.google.firebase.messaging.FirebaseMessagingService.zzd (Unknown Source)
at com.google.firebase.iid.zzc.run (Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
at com.google.android.gms.common.util.concurrent.zza.run (Unknown Source)
at java.lang.Thread.run (Thread.java:762)
Исследование
Мы провели расследование и нашли причину:
- Исключение возникает, когда Firebase инициализирует себя.
- Это может произойти, если на устройстве установлена устаревшая версия Google Play Services.
- Нам удалось решить эту проблему в коде приложения, поместив все вызовы Firebase в блок try / catch.
- Однако это не поможет с
logNotificationDismiss
и logNotificationReceived
, так как мы не можем контролировать этот код.
Служба поддержки Google
Мы уведомили команду Firebase о проблеме и провели неделю, общаясь со службой поддержки. Тем не менее, они сказали нам, что не будут даже смотреть на проблему, пока мы не отправим сборку, которая воспроизводит сбой. Наше объяснение, что проблема связана с конкретным устройством, не помогло.
Вопрос
Что мы можем сделать, чтобы предотвратить сбой com.google.firebase.messaging.MessagingAnalytics
в нашем приложении?