Я добавил Firebase в свой проект, как обычно, но на этот раз я столкнулся с проблемами с FCM: когда я отправляю одно уведомление FCM (классический push или с полезной нагрузкой / данными внутри) по определенной теме с консоли, Systray ( как приложение в фоновом режиме) показывает 2 уведомления на моих телефонах Android.
Я уже искал много похожих вопросов по этой проблеме, но ни один из ответов не решил мою проблему:
1) Я не использую следующие разрешения
<uses-permission android:name="mypackage.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="mypackage.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
2) Я попытался удалить ключи SHA-1 (у меня есть 4 ключа, 3 SHA-1 и один SHA-256), чтобы сохранить только один (я думал, что несколько ключей = несколько client_ids = несколько полученных уведомлений), затем сгенерировал новый google-service.json, удалите app / clean / rebuild / install, но я все еще получил 2 уведомления.
3) Я проверил с помощью класса, расширяющего FirebaseMessagingService, и получаю точно такой же push-запрос (та же дата отправки, messageid, тема и т. Д.) 2 раза
Дополнительная информация:
- Я подписался несколько раз на одну и ту же тему, но я прочитал, что FCM не накапливает номер или подписку для отправки нескольких push-уведомлений пользователям, которые подписались несколько раз
- Я тестировал только на Android O
Я использую следующие версии Google Play Services и Firebase:
реализация 'com.google.android.gms: play-services: 12.0.0'
реализация "com.google.android.gms: play-services-location: 12.0.0"
реализация "com.google.firebase: firebase-messaging: 12.0.0"
реализация "com.google.firebase: firebase-core: 12.0.0"
реализация "com.google.firebase: firebase-auth: 12.0.0"
реализация 'com.google.firebase: firebase-invites: 12.0.0'
Я думал, что это могло быть исправлено в более поздних версиях Firebase, но обновление всего до последних версий заставило меня столкнуться с сбоями на Android O (ошибка ориентации экрана), которую я не мог легко исправить (и у меня не было гарантии что это было бы решением).