我已经设法执行了一个实现,使我能够创建一个设备组,从中添加和删除注册ID并将消息发送给它,但是现在我已经意识到自己不喜欢t了解我何时应该调用此方法。
我最初认为的是
- 当用户注册到应用程序 时,请创建一个设备组
- 在用户登录的设备组中添加注册ID
- 用户注销时删除登录时添加的注册ID
问题是,如果用户仅在一个设备中登录到该应用程序,并且他会登录,那么当我删除注册ID时,设备组将被删除。这意味着直到他再次登录,我将无法通知用户。但这不应该是其工作原理,例如在Facebook中,即使您输入一旦您没有记录,就可以获取旧通知。
但是,如果我不删除注销中的注册ID,则问题是两个设备组可以在内部进行相同的注册。当我的应用程序安装在手机中时(在Android中(会生成一个注册ID,到目前为止,我可以调试的内容是它唯一生成的ID。这意味着,如果用户登录,登录,然后将新的用户日志登录,则可以将该注册ID添加到两个用户设备组。这是否意味着他们都会收到通知?
我可以在用户登录时执行此处解释的内容时强制生成新的令牌,但是我想必须有比这项工作更好的东西。
加上,在某个时候我需要删除注册ID,否则我将达到20个限制。
所以我的问题是,什么是正确(或正确(的生命周期,这些设备组考虑了我所描述的问题以及我还没有发现的任何其他问题。谢谢!
额外的问题:如果我向设备组发送通知它收到通知吗?我想他不会。
我认为在这里应该如何使用设备组有些混乱。
首先,如果我正确理解您的流程,那么一旦用户安装并注册您的应用程序,您就会立即创建一个相应的设备组并添加用户的注册令牌。从某种意义上说,这有点太多了。
通常(按建议(,在单个用户具有多个设备的情况下,使用设备组消息传递(我确定您会得到(好。
关于如何使用设备组消息传递的脑海中,类似于:
- 用户在应用程序中安装和寄存器。包括具有唯一ID的凭证。您将相应的注册令牌保存在同一用户下。
- 用户登录到另一个设备,您可以检测该设备的注册令牌,如果保存不同(如果您有
registration_tokens
节点或其他内容(,然后生成notification_key
(设备组(,然后相应地使用它。<<<<<<<<<<<<<<<< - 如果用户注销,请相应地处理。还要处理设备组映射(请参阅此处和此处的答案(。
然后,每次发送消息时,请验证用户是否只有单个注册令牌(如果是(,请直接使用该特定的邮件。
回答额外问题:不。(但尚未对其进行测试,所以我不能确定(我理解FCM消息流向设备组的方式是在发送消息之后:
- 消息发送到FCM服务器。 然后将消息(S(排队到设备组中的相应设备。假设
- 用户登录
device3
。它不会收到可能已经排队的消息。
device1
和device2
。
众多,如果您愿意,可以进一步测试。