首页 > 解决方案 > 像文档一样命名的 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读写。

标签: firebaseflutterfirebase-cloud-messaging

解决方案


您可以使用任何您想要的有效主题名称。使用任何你喜欢的东西——这是你的选择。只要它对您有用,您选择的名称就没有什么特别“坏”的地方。如果您超出主题消息传递的记录限制之一,事情只会对您不利:

主题消息支持每个主题的无限订阅。然而,

FCM 在以下领域实施限制:

  • 一个应用实例最多可以订阅 2000 个主题。
  • 如果您使用批量导入订阅应用实例,则每个请求限制为 1000 个应用实例。
  • 新订阅的频率受每个项目的速率限制。如果您在短时间内发送太多订阅请求,FCM 服务器将响应 429 RESOURCE_EXHAUSTED(“超出配额”)响应。使用指数退避重试。

如果您认为 FCM 以任何方式与 Firestore 相关联,那么情况并非如此。您没有义务在您的 Firesore 文档和您的 FCM 主题之间进行任何匹配。


推荐阅读