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