我正在构建一个聊天,我想在 FCM 中向组中的 1000 个客户端发送消息。消息将从客户端发送到包含 1000 个客户端的组(消息不通过服务器)。我可以使用主题方法,但如果我想通过组管理员删除客户端,那是不可能的。任何人都可以提出解决方案吗?
请帮帮我。
主题确实是公开的:您(作为应用程序的开发人员/管理员)无法阻止应用程序的用户订阅主题。
如果要控制接收(和不接收)消息的设备,则必须将消息发送到这些特定设备。为此,您可以跟踪数据库中这些设备的实例 ID 令牌,然后在发送下游消息时以令牌列表为目标。
有关如何管理设备令牌和发送消息的示例,请参阅适用于 Firebase 的云消息文档。
如果您只想删除(取消订阅)某些特定成员,则可以使用 InstanceID API,特别是batchRemove
。
管理多个应用实例的关系映射
使用实例 ID 服务的批处理方法,您可以对应用实例进行批量管理。例如,您可以向 FCM 或 GCM 主题批量添加或移除应用实例。若要管理应用实例,请在此终结点调用实例 ID 服务,并在 JSON 正文中提供应用实例令牌:
https://iid.googleapis.com/iid/v1:batchAdd https://iid.googleapis.com/iid/v1:batchRemove
参数
- 授权:键=YOUR_API_KEY。在标头中设置此参数。
- to :主题名称。
- registration_tokens:要添加或删除的应用实例的 IID 令牌数组。
结果
成功后,调用将返回 HTTP 状态 200。空结果表示令牌订阅成功。对于失败的订阅,结果包含以下错误代码之一:
- NOT_FOUND — 注册令牌已删除或应用程序已卸载。
- INVALID_ARGUMENT — 提供的注册令牌对发件人 ID 无效。
- 内部 — 后端服务器因未知原因而失败。重试该请求。
- TOO_MANY_TOPICS — 每个应用实例的主题数量过多。
示例开机自检请求
https://iid.googleapis.com/iid/v1:batchAdd Content-Type:application/json Authorization:key=API_KEY { "to": "/topics/movies", "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."], }
示例结果
HTTP 200 OK { "results":[ {}, {"error":"NOT_FOUND"}, {}, ] }