我正在尝试在项目中集成FCM通知。我具有后端云功能,并且应用程序在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应用程序上,我多次收到几分钟间隔的通知。在这里,我看到了这样的通知:
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
请尝试在上面提到的环境中复制。
我通过重命名我的应用程序包名称解决了问题例如旧名称:com.xyz to com.xyz2
使用新名称,我将此(新的)Android应用程序添加到Firebase Project(它生成了新应用ID)。通知开始按预期工作(没有重试)。
但是,我必须重命名应用程序包来解决它是可惜的。如果此应用程序已在Google Play中发布,那么我将无法重命名该应用程序,否则没有人可以在此应用程序上获得进一步的更新,它将成为一个新的应用程序!
如果某些Firebase开发人员可以阐明正在发生的事情,那仍然很棒。
当应用程序名称/顶级软件包名称相同时,重新创建Firebase项目和重新创建Android项目无济于事。在现有的Android项目中更改应用程序名称和相关名称空间暂时已修复。
理想情况下,我想知道适当的修复程序,并使用现有名称,而不是在应用程序名称的末端使用后缀2。
我只是在我的离子Android应用程序中出现了同样的问题。2、4和8分钟后重复相同的通知。这似乎是客户端的问题,因为它甚至直接从Firebase控制台发送消息时就会发生。
我尝试了几件事来修复它,这似乎是我能像预期的那样使它起作用的唯一方法就是制作一个新的Android项目和新的Firebase应用程序。