почему я получаю несколько уведомлений FCM на android 7
Я пытаюсь интегрировать уведомление FCM в свой проект. У меня есть функция Cloud backend, и приложение работает на android. Ниже приведен код облака для отправки уведомления:
exports.notificationTest = functions.database.ref(`/test/childA/childB/status`).onUpdate(event => {
const status = event.data.val();
console.info("Processing notificationTest cloud function")
console.info(`status : ${status}`)
const token = "EnterYourNotificationTokenHere"
const randomNum = Math.floor(Math.random() * 100)
var message = {
notification: { title : "My App", body : `Notification Test ${randomNum}`}
}
console.info(`Sending message on notification token`)
return admin.messaging().sendToDevice(token, message)
.then((response) => {
console.info("Successfully sent notification")
}).catch(function(error) {
console.warn("Error sending notification " , error)
})
})
на родном Android app, я получаю уведомление несколько раз с интервалом в несколько минут. Вот, я видел уведомление, как это:
Notification Test 30
затем после 2,4,8,16,32 минут предыдущего времени уведомления я снова получаю ниже сообщения
Notification Test 30
Я не думаю, что мне нужно вставить журнал здесь, потому что код определенно выполняется только один раз (так как случайное число в уведомлении остается неизменным).
Итак, почему это происходит и как это исправить?
ниже мое окружение:
Native Android App
Using Android 7
Latest Android Studio Stable
Android Gradle Plugin - 3.1.1
Gradle - 4.1
Firebase-Ui - 3.1.0
Play Services - 11.4.2
пожалуйста, попробуйте воспроизвести в упомянутой выше среде.
2 ответов
У меня просто была такая же проблема с моим ионным Android-приложением. Такое же оповещение повторно через 2, 4 и 8 минут. Это кажется проблемой на стороне клиента, потому что это даже происходит при отправке сообщения непосредственно с консоли Firebase.
Я попробовал несколько вещей, чтобы исправить это, и похоже, что единственный способ заставить его работать по назначению-сделать новый проект Android и новое приложение Firebase.
Я решил проблему, переименовав имя пакета приложения например, старое имя: com.xyz-com.xyz2
используя новое имя, я добавил Это (новое) приложение для android в проект firebase (он создал новый идентификатор приложения). И уведомления начали работать, как ожидалось (без повторной попытки).
но его позор, что я должен переименовать пакет приложений, чтобы решить его. Если это приложение было выпущено в google play, то я не мог переименовать приложение, иначе никто не сможет получить дальнейшие обновления этого приложения, и это становится новым приложением!
было бы здорово, если бы некоторые разработчики firebase могли пролить свет на то, что происходит.
воссоздание проекта firebase и воссоздание проекта android не помогли, когда имя приложения / имя пакета верхнего уровня были одинаковыми. Изменение имени приложения и соответствующих пространств имен в существующем проекте android исправлено.
В идеале я хотел бы знать правильное исправление для этого и использовать существующее имя, а не суффикс 2 в конце приложения имя.