为每个用户创建Firebase主题

问题描述:

我们有一种为每个注册用户创建主题的设计方法。为每个用户创建Firebase主题

  1. 创建一个新用户
  2. 将其保存到我们的数据库与生成的令牌
  3. 订阅/topics/{user-token}当Android或 iOS设备用户登录。

因此,如果用户有多个设备,并且我们想发送用户特定的通知,我们只需将它发送到/topics/{user-token},以便它被所有设备接收。

我们还没有遇到过一些用户的问题,但是对于Firebase的限制还可以,这是一个好方法吗?

+0

听起来不错。为什么你给uid或userId一个名字“user-token”,就像Google的传道人一样? –

+2

如果用例适用于具有多个设备的单个用户,为什么不使用[设备组消息](https://firebase.google.com/docs/cloud-messaging/android/device-group)? –

+0

@AL。你是对的,我错过了,但我们必须管理组列表,如果我们使用它,就像有人从Android设备注销,我发送请求到我的服务器,删除它的registration_id等,但如果我使用'主题',我只是在客户端取消订阅。如果Firebase没问题,我会选择主题。但谢谢你的建议。 – ocanal

(我感动我的意见为答案)

大多数时候创建每个用户的FCM话题是不是一个好主意。

发送给FCM TOPICS的消息是公开的。任何用户(甚至是来自 不同的应用程序)都可以订阅/ topics/{用户名}并接收那些 消息。

例子:
另一名开发者可以从您的APK复制谷歌与services.json文件。
然后他可以订阅任何主题。
要拦截您的用户消息,攻击者仍需要猜测您正在使用的{用户名}或任何其他标识符。但是,如果您认为这会发生,那么问题就很大,因为您永远不知道是否有人收到您的邮件副本,而且您通常不会更改{用户名}。

这不是FCM的安全问题。这是主题API设计的一部分。
如果您需要安全消息,则可以直接将它们发送到设备令牌。

如果您还想为每个用户做一个主题,请注意不要发送敏感数据或不应被第三方拦截的数据。

+0

请解释**如果您需要安全消息,则可以直接将它们发送到设备令牌。** –