我正在建立聊天,我想在FCM中向群组中的1000个客户端发送消息。消息将从客户端发送到1000个客户端组(消息不通过服务器)。我可以使用主题方法,但如果我想通过组管理员删除客户端,那么它是不可能的。任何人都可以提出解决方案吗?
请帮帮我。
答案 0 :(得分:1)
主题确实是公开的:您(作为应用的开发者/管理员)无法阻止您的应用用户订阅主题。
如果您想控制执行(而不是)接收邮件的设备,则必须send the message to those specific devices。您可以通过跟踪数据库中这些设备的instance ID tokens,然后在发送下游消息时定位令牌列表来执行此操作。
答案 1 :(得分:0)
如果您只想删除(取消订阅)某些特定成员,则可以使用InstanceID API,特别是batchRemove
。
管理多个应用实例的关系图
使用Instance ID服务的批处理方法,您可以执行app实例的批量管理。例如,您可以向FCM或GCM主题执行批量添加或删除应用程序实例。要管理应用程序实例,请在此端点调用Instance ID服务,在JSON正文中提供应用程序实例令牌:
https://iid.googleapis.com/iid/v1:batchAdd https://iid.googleapis.com/iid/v1:batchRemove
参数
- 授权:key = YOUR_API_KEY。在标题中设置此参数。
- to:主题名称。
- registration_tokens:您要添加或删除的应用实例的IID令牌数组。
结果
成功时,调用返回HTTP状态200.空结果表示成功订阅令牌。对于失败的订阅,结果包含以下错误代码之一:
- NOT_FOUND - 已删除注册令牌或已卸载应用程序。
- INVALID_ARGUMENT - 提供的注册令牌对发件人ID无效。
- INTERNAL - 后端服务器由于未知原因而失败。重试请求。
- TOO_MANY_TOPICS - 每个应用实例的主题数量过多。
POST请求示例
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"}, {}, ] }