android - 主题消息和设备令牌云功能推送通知的区别?
问题描述
如果用户设备令牌存储在 Firebase 数据库中,Firebase 云功能可以向任何用户发送推送通知。同样,如果用户订阅了一个主题,那么另一个用户也可以向该用户发送通知。现在的问题是,在什么情况下我们应该使用主题消息传递,在什么情况下我们应该使用云功能来发送通知。如果任何用户订阅了他的唯一 ID(由 Firebase 提供),那么任何人都可以通过向该唯一 ID 发布主题消息来向他发送主题消息。这是一个好方法还是我们应该使用云功能使用设备令牌向该用户发送推送通知。订阅他自己的唯一 ID 以获取通知是个好主意。请帮我解决我的问题。主题消息可以免费使用吗?
解决方案
Firebase Cloud Messaging 完全免费使用,包括主题的使用。
当您使用主题时,您将发送有关主题的消息与安装您的应用程序订阅该主题的事实分开。这意味着您可以稍后将订阅者添加到主题,而无需编写额外的代码甚至数据(因为订阅主题的令牌列表由 FCM 本身处理)。
另一方面:主题是公开的。一旦有人知道主题 ID,他们就可以订阅该主题,并接收您发送到该主题的任何消息。
使用主题的替代方法是将消息直接发送到FCM 实例 ID 令牌。在这种情况下,您将自己保留一个令牌列表,并确定将消息传递到哪个令牌。在这种情况下,您可以完全控制谁接收消息,但必须维护自己的令牌列表,以及什么令牌接收什么消息的映射。
请注意,可以从任何受信任的环境(例如您的开发机器、您控制的服务器或 Cloud Functions)发送消息(无论是发送到主题还是发送到令牌)。并且无法从客户端代码(安全地)发送消息(无论是发送到主题还是发送到令牌) 。
推荐阅读
- c# - 部分页面 Asp.NET IEnumerable 中没有 ViewData
- windows - 如何在运行时自我更新应用程序
- ruby-on-rails - 在视图中显示验证错误
- apache-spark - 通过优化读取存储键值对的方法,与流处理引擎一起使用
- ckeditor5 - 如何实现与纯文本占位符一起使用的占位符插件?
- django - Gunicorn-Supervisor Django 设置问题
- php - 从 PHP 中的多维数组中查找特定元素
- firebase - Firestore:从 DocumentSnapshot 中获取子集合
- python - Pandas 中的条件计数列,其中单独的字符串在多列中匹配
- javascript - 在 Javascript 对象中添加延迟元素