【发布时间】:2015-01-27 05:09:20
【问题描述】:
我正在开发一个已实现推送通知的 iOS 应用程序。 一切正常。 但是只是想问一下我的Apple设备的设备令牌是否会改变??
我们还需要互联网连接来生成设备令牌。
谢谢
【问题讨论】:
标签: ios iphone push-notification
我正在开发一个已实现推送通知的 iOS 应用程序。 一切正常。 但是只是想问一下我的Apple设备的设备令牌是否会改变??
我们还需要互联网连接来生成设备令牌。
谢谢
【问题讨论】:
标签: ios iphone push-notification
我的 Apple 设备的设备令牌将永远改变
——是的。如果您将备份数据恢复到新设备或重新安装操作系统,设备令牌会更改。所以我的建议是用令牌更新服务器
我们是否需要互联网连接来生成设备令牌
——据我所知,是的。当您注册用户时,您调用方法注册推送通知。这在成功注册时调用委托方法 -
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
表明您已成功注册推送通知或失败时它调用 -
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
提示注册通知失败。
您可以通过关闭网络并运行您的应用程序来检查它。
【讨论】:
根据 Apple 文档,答案是肯定的:
此阶段令牌信任的形式确保只有 APNs 生成 它将在以后兑现的令牌,并且它可以向自己保证, 设备交给它的令牌与之前的令牌相同 为该特定设备配置 - 并且仅针对该设备。
如果用户将备份数据恢复到新设备或重新安装 操作系统,设备令牌发生变化。
【讨论】:
来自苹果文档 -
设备令牌是您在特定设备上向您的应用发送推送通知的关键。设备令牌可以更改,因此您的应用程序需要在每次启动时重新注册并将收到的令牌传递回您的服务器。如果您未能更新设备令牌,远程通知可能无法到达用户的设备。
当用户将备份数据恢复到新设备或计算机或重新安装操作系统时,设备令牌总是会发生变化。将数据迁移到新设备或计算机时,用户必须先启动您的应用一次,然后才能将远程通知发送到该设备。
从不缓存设备令牌;始终在需要时从系统获取令牌。如果您的应用之前注册了远程通知,则再次调用 registerForRemoteNotifications 方法不会产生任何额外开销,并且 iOS 会立即将现有设备令牌返回给您的应用委托。此外,iOS 会在设备令牌更改时调用您的委托方法,而不仅仅是响应您的应用注册或重新注册。
了解更多APNS Doc
【讨论】: