我们有一台服务器可以在iOS和Android上向我们的用户发送通知。 Android运行正常。
问题是,当用户卸载并重新安装我们的应用程序时。然后,应用程序通过其APNS ID(仍然相同)从GCM请求新推送ID,并向我们发送新ID。现在我们有2条记录要发送通知。看起来GCM只是以简单的N:1关系将其生成的ID映射到APNS ID。
如果我们在Android中遇到相同的情况,我们现在将通知发送到GCM,它会在第一个响应中发送规范ID,因此我们可以对此做出反应,不发送第二个通知。但是对于iOS,它没有。响应看似正常,完整,成功的请求。
我们是否遗漏了某些内容或者没有GCM为iOS实施规范ID?我找不到有关此问题的任何信息。
答案 0 :(得分:1)
每个安装的每个设备都有一个注册令牌。 每次卸载并重新安装应用程序(iOS或Android)时,GCM都会为您提供新的注册令牌。
这与Canonical IDs的概念类似。如果您获得了Canonical ID,那么您需要使用新返回的Canonical ID替换服务器中的旧注册令牌,因为最终旧的注册令牌将停止工作。
因此,如果您在卸载并重新安装iOS应用程序(或Android应用程序)时收到新的注册令牌,则可以简单地将新返回的令牌与旧令牌进行比较。如果新令牌与旧令牌不同,那么您只需将旧令牌替换为服务器中的新令牌,这样您就不需要在服务器中维护2个令牌。