Я следовал инструкциям Google (https://firebase.google.com/docs/cloud-messaging/android/receive) для получения уведомлений. Мое приложение использует две разные платформы уведомлений pu sh, и все работает нормально. Одна из этих двух платформ не предоставляет никакого идентификатора канала. Поэтому я переписал onMessageReceived (), чтобы перехватить удаленное сообщение и сгенерировать свое собственное уведомление с нужным каналом. Это тоже работает.
Вот моя проблема: onMessageReceived () вызывается после отображения уведомления! Поэтому я всегда получаю два уведомления. Сначала я получаю удаленное сообщение, и после этого отображается мое сгенерированное уведомление! Если я помещаю отладчик между ними и останавливаюсь в onMessageReceived (), первое сообщение уже поступило в панель уведомлений. Есть идеи?
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
remoteMessage.data.isNotEmpty().let {
sendNotification(remoteMessage)
}
}
private fun sendNotification(remoteMessage: RemoteMessage) {
// generate my own notification
}
}
Да, служба зарегистрирована в манифесте, метод всегда вызывается, сообщение «Данные» и «Уведомление» - ноль.