何时为用户注册FCM令牌

时间:2017-07-29 07:08:36

标签: android firebase firebase-cloud-messaging

我对在我的应用中实施Firebase云消息传递有一些疑问。

我的应用是类似于 whatsapp facebook messenger 的聊天。现在,每当有人登录时,我都会注册令牌并将其与用户联系起来。因此,如果有人想与用户聊天,该应用会在Db中搜索用户ID,并且我有他的令牌。

我可以注册设备令牌,但我不知道我应该在什么时候这样做。

在我的聊天中,用户通过邮件/密码注册进行注册,用户可以在其他设备上登录。

例如: 用户Frehley使用 Galaxy 8 ,并能够使用令牌在其设备中聊天和接收通知。但是,让我说他在另一台设备上。我需要再次注册令牌并将其与他联系起来吗?

所以,也许我错了,但每次用户登录并在数据库中替换它时,注册令牌的最佳时刻。正确?

现在,假设有两个用户(Frehley和Stanley)使用相同的 Galaxy 8 登录,每次登录时令牌都会不同,或者每个设备的令牌都相同?

1 个答案:

答案 0 :(得分:8)

这一切都取决于用例:

  • 如果同一用户登录到两台设备,您是否希望它们在两台设备上接收通知?如果是这样,您需要为每个用户存储多个设备令牌,并将通知发送给目标用户的每个令牌。你也可以use a device group to identify the devices for a single user。从那些文档:

      

    使用设备组消息传递,您可以将单个消息发送到在属于某个组的设备上运行的应用的多个实例。通常," group"是指属于单个用户的一组不同设备

  • 如果您希望用户仅在设备上收到他们上次使用的通知,则您必须将单个令牌与每个用户关联,并在设备上启动应用时覆盖该令牌。并非这不是必须在他们登录时,但更有可能在应用detects that they're authenticated时。

  • 如果其他用户在同一设备上使用相同的应用程序(使用相同的设备配置文件),您可能希望停止发送到设备令牌。最强大的方法是删除先前用户和令牌之间的关联,但这可能需要您保持从令牌到UID的映射。当用户退出时,更简单的方法是delete the device token。然后新用户登录,然后他们将获得一个新令牌。