почему я получаю несколько уведомлений 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 в конце приложения имя.