在Firebase云消息中向组设备发送消息

在Firebase云消息中向组设备发送消息,firebase,google-cloud-messaging,firebase-cloud-messaging,Firebase,Google Cloud Messaging,Firebase Cloud Messaging,我正在建立一个聊天室,我想在FCM发送消息给1000个客户在一个小组。该消息将从客户机发送到1000个客户机的组,而该消息不会通过服务器。我可以使用topic方法,但是如果我想通过组管理员删除一个客户端,那是不可能的。谁能提出解决方案 请帮帮我。主题确实是公开的:作为应用程序的开发人员/管理员,您不能阻止应用程序的用户订阅主题 如果你想控制接收和不接收你的信息的设备,你必须这样做。通过跟踪数据库中这些设备的标记,然后在发送下游消息时以标记列表为目标来实现这一点 有一个。如果您只想删除或取消订阅某

我正在建立一个聊天室,我想在FCM发送消息给1000个客户在一个小组。该消息将从客户机发送到1000个客户机的组,而该消息不会通过服务器。我可以使用topic方法,但是如果我想通过组管理员删除一个客户端,那是不可能的。谁能提出解决方案


请帮帮我。

主题确实是公开的:作为应用程序的开发人员/管理员,您不能阻止应用程序的用户订阅主题

如果你想控制接收和不接收你的信息的设备,你必须这样做。通过跟踪数据库中这些设备的标记,然后在发送下游消息时以标记列表为目标来实现这一点


有一个。

如果您只想删除或取消订阅某些特定的成员,您可以特别使用

管理多个应用程序实例的关系映射

使用实例ID服务的批处理方法,可以对应用程序实例执行批处理管理。例如,您可以向FCM或GCM主题批量添加或删除应用程序实例。要管理应用程序实例,请在此端点调用实例ID服务,在JSON正文中提供应用程序实例令牌:

https://iid.googleapis.com/iid/v1:batchAdd

https://iid.googleapis.com/iid/v1:batchRemove
参数

授权:key=你的API密钥。在标题中设置此参数。 至:主题名称。 注册令牌:要添加或删除的应用程序实例的IID令牌数组。 结果

成功后,调用返回HTTP状态200。空结果表示已成功订阅令牌。对于失败的订阅,结果包含以下错误代码之一:

未找到-已删除注册令牌或已卸载应用程序。 _参数无效-提供的注册令牌对于发件人ID无效。 内部-后端服务器因未知原因失败。请重试该请求。 主题太多-每个应用实例的主题数量过多。 示例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"},
    {},
  ]
}

如果我使用for循环向1000个令牌发送1000条消息,我会花费大量资源吗?for循环在一个线程中,您不会发送1000条消息,而是向多个ID发送一条消息。我不知道你在问什么。API可以正常工作。我之前已经测试过了。正如我所说的,我希望在不通过服务器的情况下,将消息从一个设备发送到另一个设备。我仍然可以使用您的建议。我想您关心的是,如果我想通过集团管理员删除客户,这是不可能的-您可以使用batchRemove然后将消息发送到主题。如果您的目标是采用无服务器方式,那么您不应该这样做。使用FCM发送下游消息需要服务器密钥,强烈建议不要在任何客户端应用程序上使用服务器密钥。我可以在客户端使用批处理方案?可以,但不应该。应用服务器是必须的。