我设法做了一个实现,允许我创建一个设备组,添加和删除它的注册ID并向其发送消息,但现在我已经意识到我不明白我什么时候应该称这种方法。
我最初的想法是
问题在于,如果用户仅在一个设备中登录到应用程序并且他注销,那么当我删除注册ID时,设备组将被删除。这意味着我无法在再次登录之前通知用户任何事情。但这不应该是它的工作方式,例如在Facebook中,即使你输入后没有记录,也会得到旧的通知。
但是,如果我在注销时删除注册ID,问题是两个设备组可以在内部进行相同的注册。当我的应用程序安装在手机中时(在Android的情况下)它会生成一个注册ID,到目前为止我可以调试它是唯一一次生成一个。这意味着如果用户登录,注销然后新用户登录,我可以将该注册ID添加到两个用户设备组。这是否意味着他们都会收到通知?
我可以通过执行解释here来强制在用户登录时生成新令牌,但我想必须有比这更好的解决方案。
另外,在某些时候我需要删除注册ID,否则我将达到20限制。
所以我的问题是设备组的正确(或正确)生命周期是什么,考虑到我所描述的问题以及我还没有发现的任何其他问题。 谢谢!
额外问题:如果我向设备组发送通知,然后在收到通知之前,用户登录新设备并将其注册ID添加到设备组,它收到通知?我想他不会。
答案 0 :(得分:1)
我认为在这里应该如何使用设备组存在轻微的混淆。
首先,如果我正确理解您的流量,只要用户安装并注册您的应用,您就会立即创建相应的设备组并添加用户的注册令牌。从某种意义上说,这有点过于使用它了。
一般情况下(和建议的那样),设备组消息传递用于单个用户有多个设备(这部分我确定你有),但立即创建一个设备不错。
关于如何使用设备组消息传递的想法是:
registration_tokens
个节点),然后生成notification_key
(设备组) ),然后相应地使用它。然后,每次发送消息时,验证用户是否只有一个注册令牌,如果是,则直接使用该特定注册令牌。
回答额外问题:不。 (但是没有测试过,所以我不能确定)我理解FCM消息流向设备组的方式是,在您发送消息之后:
device1
和device2
。device3
。它不会收到它可能已经排好的消息。如上所述,如果你愿意,可以进一步测试。