我在一台设备上有两个应用程序。对于iOS 7,两个应用程序都发送不同的设备令牌,但对于iOS 6,这两个应用程序都发送相同的设备令牌。
根据我的理解,设备令牌必须与一台设备中的所有应用程序相同。 iOS7与iOS 6有什么不同吗?
答案 0 :(得分:21)
<强>更新强>
我想我读的这个有点太快了。请注意我的修订。如果答案符合您的使用案例,请随时接受。
根据您的描述,我建议iOS6和iOS7之间的令牌生成有潜在的变化。为了更仔细地检查这种行为,我建议您查看Local and Push Notifications Programming Guide。在“计划,注册和处理通知”部分的“指南”中,可以从Apple找到此声明。
设备令牌可以更改。您的应用每次都需要重新注册 通过调用registerForRemoteNotificationTypes在iOS中启动: UIApplication的方法,在OS X中通过调用 registerForRemoteNotificationTypes:NSApplication的方法。该 传递给此方法的参数指定了初始类型 应用程序希望收到的通知。用户可以修改 使用iOS或中的设置,随时启用通知类型 OS X中的系统首选项。您可以查询当前启用的 使用enabledRemoteNotificationTypes属性的通知类型 UIApplication或的enabledRemoteNotificationTypes属性 的NSApplication。系统没有徽章图标,显示警报 消息,或者如果这些通知类型中的任何一种播放警报声音 未启用您的应用,即使它们已在。中指定 通知有效载荷。
<强>参考:强>
当用户同意从Apple推送服务接收远程通知时,Apple会使用设备令牌。通常,使用以下方法访问设备令牌:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
deviceToken 用于向APS标识设备的令牌。令牌是不透明的数据 键入因为这是提供者需要提交的表单 APS服务器向设备发送通知时。 APS服务器 出于性能原因需要二进制格式。
请注意,设备令牌与uniqueIdentifier不同 UIDevice的财产,因为出于安全和隐私的原因,它 擦拭设备时必须更换。
UIDevice Identifier也有重大变化(Apple限制使用)。我建议如下:
答案 1 :(得分:15)
这个也很有帮助。请参阅本文第1点: https://support.urbanairship.com/customer/portal/articles/1321513-how-ios-7-handles-push-differently
“在iOS 7之前,设备令牌在给定设备上的所有应用程序安装中都是相同的。手机上的不同应用程序,无论是Tap Tap Revenge还是USA Today,都将使用相同的地址,即设备令牌,将推送通知路由到您。与消息配对的安全凭证将确保它成为正确的应用程序。在iOS 7上,Apple更进了一步,确保设备令牌现在每个都不同单个应用安装。这有助于通过删除其他电话级别标识符来进一步保护用户的隐私。“
答案 2 :(得分:2)
虽然这是非常晚的答案,但我想分享我对i0S 9.2.1的测试。 设备令牌对于设备中的每个应用程序都是唯一的。每次安装应用程序时都会生成新的设备令牌。据我所知,苹果在发布iOS7后改变了设备令牌的政策。