Android 何时为用户注册FCM令牌

Android 何时为用户注册FCM令牌,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我对在我的应用程序中实现Firebase云消息有一些疑问 我的应用程序类似于whatsapp和facebook messenger。现在,每次有人登录时,我都会注册令牌并将其与用户关联。因此,如果有人想与用户聊天,应用程序会在数据库中搜索用户ID,我就有了他的令牌 我可以注册设备令牌,但我不确定何时应该注册 在我的聊天中,用户通过邮件/密码注册进行注册,并且用户可以登录其他设备 例如: 用户Frehley使用Galaxy 8,并能够使用令牌在其设备中聊天和接收通知。但假设他登录了另一台设备。我需

我对在我的应用程序中实现Firebase云消息有一些疑问

我的应用程序类似于whatsapp和facebook messenger。现在,每次有人登录时,我都会注册令牌并将其与用户关联。因此,如果有人想与用户聊天,应用程序会在数据库中搜索用户ID,我就有了他的令牌

我可以注册设备令牌,但我不确定何时应该注册

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

例如: 用户Frehley使用Galaxy 8,并能够使用令牌在其设备中聊天和接收通知。但假设他登录了另一台设备。我需要再次注册令牌并将其与他关联,对吗

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


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

这取决于使用情况:

  • 如果同一用户登录到两台设备,是否希望他们在两台设备上都收到通知?如果是这样,您将需要为每个用户存储多个设备令牌,并向目标用户的每个令牌发送通知。你也可以。从这些文件中:

    通过设备组消息传递,您可以向属于一个组的设备上运行的应用程序的多个实例发送一条消息。通常,“组”是指属于单个用户的一组不同设备

  • 如果您希望用户仅在设备上接收他们上次使用的通知,则必须将单个令牌与每个用户关联,并在他们在设备上启动应用程序时覆盖该令牌。并不是说这不一定是在他们登录时,而是更可能是在应用程序启动时

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


你能解释最后一点吗?当用户注销时,我们如何删除设备令牌?这真的很有帮助。非常感谢。