我有两个应用在一个设备上。对于iOS 7,这两个应用程序都发送不同的设备令牌,但对于iOS 6,两个应用程序都发送相同的设备令牌。
据我理解,在一个设备中,所有应用的设备令牌必须相同。iOS 7和iOS 6有什么不同吗?
我有两个应用在一个设备上。对于iOS 7,这两个应用程序都发送不同的设备令牌,但对于iOS 6,两个应用程序都发送相同的设备令牌。
据我理解,在一个设备中,所有应用的设备令牌必须相同。iOS 7和iOS 6有什么不同吗?
更新:
我想我太快阅读了这篇文章。请注意我的修改。如果答案符合您的用例,请随意接受它。
根据您的描述,我建议在iOS6和iOS7之间生成令牌时发生了潜在的更改。为了更详细地研究这种行为,我建议您查看《本地和远程通知编程指南》。在该指南中的“调度、注册和处理通知”一节中,您将找到苹果公司的以下声明。
设备令牌可能会更改。 您的应用程序需要每次启动时重新注册——在 iOS 中通过调用 UIApplication 的 registerForRemoteNotificationTypes: 方法,在 OS X 中通过调用 NSApplication 的 registerForRemoteNotificationTypes: 方法。传递给该方法的参数指定应用程序希望接收的初始通知类型。用户可以在任何时候使用 iOS 中的“设置”或 OS X 中的“系统偏好设置”修改启用的通知类型。您可以使用 UIApplication 的 enabledRemoteNotificationTypes 属性或 NSApplication 的 enabledRemoteNotificationTypes 属性查询当前启用的通知类型。即使在通知负载中指定了这些通知类型,如果这些通知类型没有为您的应用程序启用,则系统不会徽章图标、显示警报消息或播放警报声音。
参考文献:
当用户同意从 Apple 推送服务接收远程通知时,苹果使用设备令牌。
通常情况下,可以通过以下方法访问设备令牌:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
deviceToken设备令牌是一个用于识别设备的标识符。该令牌是一种不透明的数据类型,因为提供程序在将通知发送到设备时需要将该形式提交给APS服务器。为了性能考虑,APS服务器要求使用二进制格式。
请注意,deviceToken与UIDevice的uniqueIdentifier属性不同,因为出于安全和隐私原因,在设备被擦除时,deviceToken必须更改。
UIDevice标识符也有显著更改(Apple限制了使用)。我建议阅读以下内容: