【发布时间】:2013-10-31 17:46:52
【问题描述】:
我在一台设备上有两个应用程序。对于 iOS 7,两个应用程序都发送不同的设备令牌,但对于 iOS 6,两个应用程序都发送相同的设备令牌。
据我了解,设备令牌对于一台设备中的所有应用程序必须相同。 iOS7 与 iOS 6 有什么不同吗?
【问题讨论】:
标签: ios ios7 apple-push-notifications devicetoken
我在一台设备上有两个应用程序。对于 iOS 7,两个应用程序都发送不同的设备令牌,但对于 iOS 6,两个应用程序都发送相同的设备令牌。
据我了解,设备令牌对于一台设备中的所有应用程序必须相同。 iOS7 与 iOS 6 有什么不同吗?
【问题讨论】:
标签: ios ios7 apple-push-notifications devicetoken
更新:
我想我读这个有点太快了。请注意我的修改。如果答案符合您的用例,请随时接受。
根据您的描述,我建议 iOS6 和 iOS7 之间的令牌生成存在潜在变化。为了更仔细地检查这种行为,我建议您查看Local and Push Notifications Programming Guide。在“计划、注册和处理通知”部分的指南中,可以找到 Apple 的这一声明。
设备令牌可以更改。您的应用每次都需要重新注册 在 iOS 中通过调用 registerForRemoteNotificationTypes 启动: UIApplication 方法,在 OS X 中通过调用 registerForRemoteNotificationTypes:NSApplication 的方法。这 传递给此方法的参数指定初始类型 应用程序希望接收的通知。用户可以修改 在任何时候启用的通知类型,使用 iOS 中的设置或 OS X 中的系统偏好设置。您可以查询当前启用的 使用 enabledRemoteNotificationTypes 属性的通知类型 UIApplication 或 enabledRemoteNotificationTypes 属性 NS应用程序。系统没有徽章图标,显示警报 消息,或者如果这些通知类型中的任何一个是,则播放警报声音 未为您的应用启用,即使它们在 通知负载。
参考:
当用户同意接收来自 Apple 推送服务的远程通知时,Apple 会使用设备令牌。
通常通过以下方法访问设备令牌:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
设备令牌 向 APS 标识设备的令牌。令牌是不透明的数据 类型,因为这是提供者需要提交给 APS 服务器在向设备发送通知时提供服务。 APS 服务器 出于性能原因需要二进制格式。
请注意,设备令牌与唯一标识符不同 UIDevice 的属性,因为出于安全和隐私的原因,它 擦除设备时必须更改。
UIDevice 标识符也有重大变化(Apple 已限制使用)。我建议以下内容:
【讨论】:
这个也很有帮助。请参阅本文中的第 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 完成的测试。 设备令牌对于设备中的每个应用程序都是唯一的。每次我们安装应用程序时都会生成一个新的设备令牌。据我所知,苹果在 iOS7 发布后改变了对设备令牌的政策。
【讨论】: