我刚刚第一次使用 firebase 功能推送通知。我正在监视以下更改:
exports.observeNotifications = functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite((change, context) => {
Run Code Online (Sandbox Code Playgroud)
后来,我使用:
const userQuery = admin.database().ref(`users/${from_user_id}/username`).once('value');
const deviceToken = admin.database().ref(`/users/${user_id}/device_token`).once('value');
Run Code Online (Sandbox Code Playgroud)
检索发件人的 userUID 和设备令牌,稍后与 sendToDevice()
这很好用,是我在任何地方都看到推荐的方法,但我想知道为什么要在用户到用户场景中使用主题来执行此操作。
在聊天应用程序的示例中,每次发送聊天时,都会发送一个值notifications/users/{uid} ...并触发该事件。然后必须进行值调用,必须完成承诺处理,然后才能配置和发送推送有效负载。
对于主题,当用户首次加载应用程序时,您可以为用户订阅“chat_notifications_usersIUID”之类的主题。这不需要获取设备令牌并完成使用承诺的过程,并大大简化了向特定用户发送通知的过程,只需推送到特定于接收者 UID 的特定主题即可。
当从用户向用户发送推送通知时,使用主题而不是 firebase 函数观察是否有任何缺点。
ios firebase google-cloud-functions firebase-cloud-messaging