firebase - 像文档一样命名的 Flutter FCM 主题
问题描述
我是 firebase 云消息传递的新手,我正在寻找向客户发送通知的最佳方式。
我希望人们能够像这样订阅子集合中的新条目:
books/{bookID}/comments/{commentId}/reply/{replyId}}
如果我使用这种语法,那会很糟糕吗?所以我可以在创建新回复时推送关于该主题的通知
void fcmSubscribe(String bookId,String commentId) {
firebaseMessaging.subscribeToTopic('book-${bookiD}_comment-${commentId}');
}
或者我需要使用单个设备通知并创建这样的条目
books/{bookID}/comments/{commentId}/notifications/{tokenId}}
我想避免firestore读写。
解决方案
您可以使用任何您想要的有效主题名称。使用任何你喜欢的东西——这是你的选择。只要它对您有用,您选择的名称就没有什么特别“坏”的地方。如果您超出主题消息传递的记录限制之一,事情只会对您不利:
主题消息支持每个主题的无限订阅。然而,
FCM 在以下领域实施限制:
- 一个应用实例最多可以订阅 2000 个主题。
- 如果您使用批量导入订阅应用实例,则每个请求限制为 1000 个应用实例。
- 新订阅的频率受每个项目的速率限制。如果您在短时间内发送太多订阅请求,FCM 服务器将响应 429 RESOURCE_EXHAUSTED(“超出配额”)响应。使用指数退避重试。
如果您认为 FCM 以任何方式与 Firestore 相关联,那么情况并非如此。您没有义务在您的 Firesore 文档和您的 FCM 主题之间进行任何匹配。
推荐阅读
- c - XChangeProperty 无法写入剪贴板
- sql - 如何批量更改postgis脚本的脚本变量
- c - 分别打印二叉树的高度
- c# - Xamarin 中单一内容的 DataTemplate 选择
- php - 在 Laravel 的 ENUM 列中添加值
- selenium - 我们可以通过 selenium 集成在 kubernetes 中部署 jmeter 吗?
- python - 使用 lxml 保存 xml 文件时设置 xsi:schemaLocation 属性
- google-closure-compiler - 抑制特定的警告/错误
- azure - 在此对象 azure 发布管道上找不到属性“值”
- android - 针对 POCO::Net::SocketAddress 的问题链接