在哪个移动平台上,“推送令牌”不是永久性的?

我们都知道,为了在任何移动平台中使用推送通知function,我们需要一个称为“推送令牌”的唯一标识符。

开发人员需要以某种方式将此“令牌”保存到他的服务器,以便能够向用户发送通知。

但是,在哪个移动平台上,这个“令牌”将保持永久性并且可能会改变?

换句话说,在哪些情况下,如果发生变化,开发人员必须注意更新数据库中的用户“令牌”?

答案应包括: iOSandroidWPBB平台。

*如果您知道这些平台中至少有一个答案会发布您的答案,最后我将总结所有答案以获得完整答案。*

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刷新Android应用程序的注册ID。

在Windows Phone中,我不确定通知通道URI在实践中的变化频率,但微软也声称它可能随时更改。

如果推送通知URI发生更改,所有应用都应注册ChannelUriUpdated事件。 即使您已经打开了一个频道,也应该在URI发生变化时注册ChannelUriUpdated事件。

总而言之,您应始终将Token视为可能在您重新启动应用程序时随时更改。

在Android中,如果您使用谷歌云消息,它将会改变

请注意,Google可能会定期刷新注册ID,因此您应该设计Android应用程序,并了解可能会多次调用com.google.android.c2dm.intent.REGISTRATION意图。

有关GCM的完整说明,请点击此处

对于IOS,你可以在这里看到

一旦创建,APNS设备令牌是否会发生变化?

和这里

Apple文档ApplePushService

如果用户将备份数据还原到新设备或重新安装操作系统,则设备令牌会更改。

按照EasyAPNS说明( http://www.easyapns.com ),每次应用程序启动时,您都可以检查令牌是否已注册,并最终注册设备。