当实时数据将由 FCM 更改时,我如何在 android 中获得通知?

Posted

技术标签:

【中文标题】当实时数据将由 FCM 更改时,我如何在 android 中获得通知?【英文标题】:How do i get notification in android when realtime data will change by FCM? 【发布时间】:2019-12-02 03:15:36 【问题描述】:

我正在尝试在 Firebase 实时数据库更改时在 android 设备中设置推送通知。 假设,如果安装的应用程序被杀死或在后台运行,如果任何用户在组中发布消息(在 Post 节点中添加了新子节点)并且如果组有名为 currentUid 的子节点,那么我将收到通知。

这是用户可以发布消息的帖子节点。

"Post": 
    "pushId":
              "message": "this is a group post"
             ,
    "pushId2":
              "message": "this is a group post2"
             ,

这是用户的组节点。

"Group": 
            "gkgekugkiwughkiguvwvhvuh": true,
            "***currentUSERID***": true,
            "wkuuwkbuerkigubgi3ugnbgk": true
        ,

那么我是如何使用 FCM 来完成这个功能的

【问题讨论】:

我投票结束这个问题,因为它过于宽泛,无法在 Stack Overflow 上的一篇文章中合理地回答。这是一段复杂的 javascript,它使用多种技术来实现特定的用例。如果您不了解 JavaScript,那么您的第一步就是在不涉及其他复杂技术的环境中学习它。然后对彼此单独的技术做同样的事情。一旦你做到了,结合你的学习,你找到的代码应该开始变得更有意义。届时,您可以提出更有针对性的问题。 好的,我编辑了我的问题 below javascript code您的问题中没有代码。 【参考方案1】:

你可以通过编写云函数来做到这一点。

1) 将 device_token 添加到您的用户节点。

2) 编写一个云函数,一旦创建数据就会调用该函数并向接收者发送通知。

    export const onMessageAdded = functions.database.
         ref('/chat/whichNodes/chatId').onCreate((snapShot, context) => 

 var message = 
                apns: 
                    payload: 
                        aps: 
                            alert: 
                                title: "Easee",
                                body: nameToNotify + " has sent you message",
                            ,
                            sound: '1',
                            badge: 1,
                        ,
                        notification: 
                            senderId: messageDataForUserOne.senderId + '',
                            receiverId: messageDataForUserOne.receiverId + '',
                            notificationMessage: messageDataForUserOne.message + '',
                            name: nameToNotify,
                            notificationType: "Push"
                        
                    
                ,
                android: 

                    data: 
                        senderId: messageDataForUserOne.senderId + '',
                        receiverId: messageDataForUserOne.receiverId + '',
                        notificationMessage: messageDataForUserOne.message + '',
                        name: nameToNotify,
                        notificationType: "Push"
                    
                ,
                token: userDeviceToken
            ;

            admin.messaging().send(message).then(suc => 
                console.log('Notification send Successfuly.' + suc)
            ).catch(errorr => 
                console.log('Notification Failed.' + userDeviceToken
                )
            )
        

【讨论】:

以上是关于当实时数据将由 FCM 更改时,我如何在 android 中获得通知?的主要内容,如果未能解决你的问题,请参考以下文章

应用完全关闭时获取 FCM 远程通知 iOS

当管理面板中的“设置”已更改以准备转移到实时站点时,如何恢复 wordpress?

如何在后台控制 FCM 消息通知 [重复]

如何从网络向应用发送 FCM 通知

iOS 如何在应用未运行时处理 FCM

FCM android onmessagereceived not called