Bar*_*ley 1 ios firebase google-cloud-functions firebase-cloud-messaging
我刚刚第一次使用 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 函数观察是否有任何缺点。
主题可公开访问。因此,即使您为每个用户创建一个主题,所有用户都可以订阅这些主题中的每一个。
因此,如果消息被认为是公开的,您应该只以这种方式使用主题。例如,在公共聊天室场景中,这可能没问题,因为无论如何每个人都已经可以看到公共聊天室中的消息了。但是通过主题发送私人消息,意味着其他用户可以在知道用户的主题后拦截它们。
如果您的消息不打算公开,您将需要发送到各个令牌。您应该只在极端情况下达到速率限制。如果您遇到这种情况,请联系Firebase 支持以获取个性化的故障排除帮助
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |