何时为用户注册FCM令牌

Ace*_*Ace 8 android firebase firebase-cloud-messaging

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

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

我可以注册设备令牌,但我不确定我该怎么做.

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

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

所以,也许我错了,但是每次用户登录并在DB中替换它时,注册令牌的最佳时刻.对?

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

Fra*_*len 12

这一切都取决于用例:

  • 如果同一用户登录到两台设备,您是否希望它们在两台设备上接收通知?如果是这样,您将需要为每个用户存储多个设备令牌,并将通知发送给目标用户的每个令牌.您还可以使用设备组来识别单个用户的设备.从那些文档:

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

  • 如果您希望用户仅在设备上接收上次使用的通知,则必须将单个令牌与每个用户关联,并在设备上启动应用时覆盖该令牌.并不是说这不一定是他们登录时,但更有可能是当应用程序检测到他们已经过身份验证时.

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