ios 7设备令牌对于同一设备是不同的

时间:2013-10-22 17:52:15

标签: ios ios7 apple-push-notifications devicetoken

我在一台设备上有两个应用程序。对于iOS 7,两个应用程序都发送不同的设备令牌,但对于iOS 6,这两个应用程序都发送相同的设备令牌。

根据我的理解,设备令牌必须与一台设备中的所有应用程序相同。 iOS7与iOS 6有什么不同吗?

3 个答案:

答案 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的财产,因为出于安全和隐私的原因,它   擦拭设备时必须更换。

Device Tokens Used in the Apple Push Notification Service

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后改变了设备令牌的政策。