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

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

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

更新:

我想我读得太快了一点。 请注意我的修订。 如果答案符合您的使用情况,请随时接受。

根据你的描述,我会build议iOS6和iOS7之间的令牌生成有了根本性的变化。 为了更仔细地检查这个行为,我build议你看一下本地和推送通知编程指南 。 在“调度,注册和处理通知”部分的指南中,您可以从苹果公司获得此声明。

设备令牌可以改变。 您的应用程序需要在每次启动时重新注册 – 在iOS中,通过调用UIApplication的registerForRemoteNotificationTypes:方法,并在OS X中调用NSApplication的registerForRemoteNotificationTypes:方法。 传递给此方法的参数指定应用程序希望接收的通知的初始types。 用户可以使用iOS中的设置或OS X中的系统首选项来修改启用的通知types。您可以使用UIApplication的enabledRemoteNotificationTypes属性或NSApplication的enabledRemoteNotificationTypes属性来查询当前启用的通知types。 如果您的应用程序未启用任何通知types(即使通知有效内容中指定了这些通知types),系统也不会标记图标,显示警报消息或播放警报声音。

参考:

当用户同意接收来自苹果推送服务的远程通知时,苹果使用设备令牌。

通常使用以下方法访问设备令牌:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

deviceToken将设备标识为APS的标记。 令牌是一种不透明的数据types,因为这是提供程序在向设备发送通知时需要提交给APS服务器的forms。 由于性能原因,APS服务器需要二进制格式。

请注意,设备令牌不同于UIDevice的uniqueIdentifier属性,因为出于安全性和隐私的原因,设备被擦除时它必须更改。

Apple推送通知服务中使用的设备令牌

UIDevice标识符也有重大变化(苹果有限制使用)。 我会build议以下内容:

  • 新的设备id(令牌)行为的Stackoverflow问题
  • 显示使用设备标识符的Apple文档
  • 显示如何使用广告标识符的Apple文档
  • UIDevice类参考

这一个也有帮助。请参阅本文中的第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已经更进一步,确保每个应用程序安装中的设备令牌都不同。通过删除另一个电话级别的标识来进一步保护用户的隐私。“

虽然这是非常晚的答案,但我想分享我为i0S 9.2.1所做的testing。 设备令牌对于设备中的每个应用都是唯一的。 每次安装应用程序时都会生成新的设备令牌。 据我所知,苹果公司在发布iOS7后已经改变了对设备令牌的政策。