我们都知道,为了在任何移动平台中使用推送通知功能,我们需要一个名为“推送令牌”的唯一标识符。
开发人员需要以某种方式将此“令牌”保存到他的服务器,以便能够向用户发送通知。
然而,在哪个移动平台上,这个“令牌”将保持永久性并且可能会改变?
换句话说,在哪些情况下,如果发生变化,开发人员必须注意更新数据库中的用户“令牌”?
答案应包括: iOS , Android , WP , BB 平台。
* 如果您知道这些平台中至少有一个答案会发布您的答案,最后我会总结所有答案以获得完整的答案。*
答案 0 :(得分:4)
Token
绝不永久。
在iOS中,设备令牌对于设备上的所有应用程序都是相同的。实际上,在升级iOS版本或从备份恢复设备之前,它保持不变。从理论上讲,Apple说它可能会随时改变,所以你应该处理这种情况。
通过请求设备令牌并将其传递给提供者 您的应用程序启动时,您可以帮助确保提供程序 拥有设备的当前令牌。如果用户将备份还原到 设备或计算机,而不是为其创建备份的设备或计算机 (例如,用户将数据迁移到新设备或计算机),他 或者她必须至少启动一次申请才能收到 再次通知。如果用户将备份数据还原到新设备 或计算机,或重新安装操作系统,设备令牌 变化。此外,永远不要缓存设备令牌并将其提供给您 供应商;始终在需要时从系统获取令牌。 如果您的申请已经注册,请致电 registerForRemoteNotificationTypes:操作系统中的结果 将设备令牌立即传递给代理人而不会产生任何影响 额外的开销。
在Android中,同一设备上的每个应用程序的注册ID都不同。当您从GCM取消注册您的应用程序然后重新注册它时,它有时会发生变化。但是,旧的注册ID通常用于向应用程序发送GCM消息(在这种情况下,您将在响应中获得规范的注册ID,要求您使用最新的注册ID)。也就是说,Google还声称注册ID可能随时更改,因此您应该处理此案例。
请注意,Google可能会定期刷新注册ID,所以您 应该设计你的Android应用程序,了解 可以调用com.google.android.c2dm.intent.REGISTRATION意图 多次。您的Android应用程序需要能够响应 相应
注册ID会一直持续到Android应用程序 取消注册,或直到Google刷新注册ID 你的Android应用程序。
在Windows Phone中,我不确定通知频道URI在实践中的变化频率,但微软也声称它可能会随时更改。
所有应用都应注册ChannelUriUpdated事件,以防万一 推送通知URI更改。即使你已经拥有一个频道 打开后,您应该注册ChannelUriUpdated事件以防万一 URI更改。
总而言之,您应始终将Token
视为在重新启动应用程序时可能会发生变化。
答案 1 :(得分:1)
在Android中,如果您使用的是Google云消息,则会更改
请注意,Google可能会定期刷新注册ID,所以您 应该在理解的情况下设计您的Android应用程序 可以调用com.google.android.c2dm.intent.REGISTRATION意图 多次。
可以找到有关GCM的完整说明here
答案 2 :(得分:1)
对于IOS,正如你在这里看到的那样
Does the APNS device token ever change, once created?
在这里
Apple Documentation ApplePushService
如果用户将备份数据还原到新设备或重新安装 操作系统,设备令牌发生变化。
按照EasyAPNS说明(www.easyapns.com),每次应用程序启动时,您都可以检查令牌是否已注册,并最终注册该设备。