Android 主题消息和设备令牌云功能推送通知之间的区别?

Android 主题消息和设备令牌云功能推送通知之间的区别?,android,firebase-cloud-messaging,google-cloud-functions,Android,Firebase Cloud Messaging,Google Cloud Functions,在Firebase中,如果用户设备令牌存储在Firebase数据库中,则函数可以向任何用户发送推送通知。同样,如果用户订阅了一个主题,那么另一个用户也可以向该用户发送通知。现在的问题是,在什么情况下我们应该使用主题消息传递,在什么情况下我们应该使用云功能发送通知。如果任何用户订阅其唯一ID(由Firebase提供),则任何人都可以通过将主题消息发布到该唯一ID来向其发送主题消息。这是一种好方法,还是我们应该使用云功能使用设备令牌向该用户发送推送通知。订阅他自己的唯一ID以获得通知是个好主意吗。请

在Firebase中,如果用户设备令牌存储在Firebase数据库中,则函数可以向任何用户发送推送通知。同样,如果用户订阅了一个主题,那么另一个用户也可以向该用户发送通知。现在的问题是,在什么情况下我们应该使用主题消息传递,在什么情况下我们应该使用云功能发送通知。如果任何用户订阅其唯一ID(由Firebase提供),则任何人都可以通过将主题消息发布到该唯一ID来向其发送主题消息。这是一种好方法,还是我们应该使用云功能使用设备令牌向该用户发送推送通知。订阅他自己的唯一ID以获得通知是个好主意吗。请帮我解决我的问题。主题消息是免费的吗?

Firebase云消息是完全免费的,包括主题的使用

当您使用主题时,您将发送有关主题的消息与安装应用程序订阅该主题的事实分开。这意味着您可以稍后向主题添加订阅者,而无需编写额外的代码甚至数据(因为订阅主题的令牌列表由FCM本身处理)

另一方面,话题是公开的。一旦有人知道主题ID,他们就可以订阅该主题,并接收您发送给该主题的任何消息

使用主题的替代方法是直接向FCM实例ID令牌发送消息。在这种情况下,您将自己在某处保留一个令牌列表,并确定将消息传递给哪个令牌。在这种情况下,您可以完全控制谁接收消息,但必须维护您自己的令牌列表,以及什么令牌接收什么消息的映射


请注意,发送消息(无论是主题还是令牌)可以从任何受信任的环境中完成,如您的开发机器、您控制的服务器或云功能。发送消息(无论是主题还是令牌)都不能通过客户端代码(安全地)完成。

为每个用户设置一个主题来处理单个消息可以被认为是良好的做法吗?