繁体   English   中英

Firebase云设备到设备推送通知设备令牌与主题

[英]Firebase cloud device to device push notifications device token vs topics for

我刚得到firebase函数推送通知,这是第一次工作。 我正在使用监视更改:

exports.observeNotifications = functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite((change, context) => {

以后,我用:

const userQuery = admin.database().ref(`users/${from_user_id}/username`).once('value');
const deviceToken = admin.database().ref(`/users/${user_id}/device_token`).once('value');

检索发送者的userUID和设备令牌,该令牌随后与sendToDevice()

这很好用,是我在各处推荐的方法,但是我想知道为什么要这样做而不是在用户到用户方案中使用主题。

在聊天应用程序的示例中,每次发送聊天时,都会向notifications/users/{uid} ...发送一个值并触发事件。 然后必须进行值调用,必须完成承诺处理,然后可以配置和发送推送有效负载。

使用主题时,当用户首次在第一时间加载应用程序时,可以为该用户订阅一个主题,例如“ chat_notifications_usersIUID”。 这样就不需要获取设备令牌并经历使用承诺的过程,并且大大简化了将通知发送给特定用户的过程,简化为仅推送到特定于收件人UID的特定主题。

在每个用户之间发送推送通知时,在Firebase函数上使用主题有任何不利之处。

主题可以公开访问。 因此,即使您为每个用户创建一个主题,所有用户都可以订阅每个主题。

因此,如果消息被认为是公开的,则仅应以这种方式使用主题。 例如,在公共聊天室中,这可能会很好,因为每个人都已经可以在公共聊天室中看到消息了。 但是通过主题发送私人消息意味着其他用户在为用户了解主题时可以拦截它们。

如果您的消息不打算公开,则需要发送给各个令牌。 您只应在极端情况下达到速率限制。 如果您遇到这种情况,请联系Firebase支持以获取故障排除方面的个性化帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM