Я еще не совсем уверен, почему, но кажется, что когда я использую службы Firebase FCM и у меня на Android Studio работает 2 или более эмуляторов, поведение Firebase FCM API сходит с ума.
Поток
Быстрый пример:
1 - подписаться на тему
FirebaseMessaging.getInstance().subscribeToTopic(topicName).addOnCompleteListener...
2 - отправлять сообщения (пока все хорошо, я получаю все сообщения)
3 - Отписаться FirebaseMessaging.getInstance().unsubscribeFromTopic(topicName).addOnCompleteListener...
4 - отправлять сообщения (пока все хорошо, я больше не получаю сообщений)
Проблема:
Когда я повторяю одно и то же с двумя или более устройствами, оно просто не работает, хотя я получаю ответ от метода addOnCompleteListener
, скажем, «отписался», я все еще получаю сообщения.
Замечания:
1 - Да, я уверен, что я отменяю подписку только на одно устройство между двумя, и одно, которое я отписываюсь, продолжает получать сообщения (я вижу в файлах журнала).
2 - Нет, проблема не возникает, когда я использую только один эмулятор
3 - Я уже пытался использовать реальное устройство в режиме отладки (подключен через USB-кабель, и у меня все еще такое же поведение при работе параллельно с другим эмулятором)
4 - Да, я уверен, что получаю ответ от метода FirebaseMessaging.getInstance().unsubscribeFromTopic(topicName)
перед отправкой сообщений.
Технические характеристики:
Android Studio: 3.1.2
Firebase:
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.firebase:firebase-messaging:17.3.3'
Мое предположение
Что-то не так между идентификацией более чем одного эмулятора, когда он работает параллельно, и поэтому API тем Firebase не может точно определить, какой именно.
Есть мысли?
Приветствия заранее.