0

5 月 1 日之后,Apple 将拒绝访问 uniqueIdentifier 的新应用程序和更新。他们在 iOS 6.x 中引入了一些很好的新方法,但是……如果我需要在旧版本的 SDK 上运行我的应用程序怎么办?所以,我的代码看起来像:

if ([UIDevice instancesRespondToSelector:@(identifierForVendor)]) {
     deviceId = [UIDevice currentDevice] identifierForVendor];
} else {
    // WHAT SHOULD BE HERE?
}

如果是旧的 SDK,开发者应该使用什么?此外,即使假设我找到要使用的东西,一旦用户升级他的操作系统版本,该值也会有所不同,这显然很糟糕——同一设备会有两个不同的 id。

4

1 回答 1

1

如果是旧的 SDK,开发者应该使用什么?

Apple不会接受使用旧版本以上的 SDK 构建的应用程序,因此您可能无法选择使用您正在考虑的 SDK。-uniqueIdentifier您仍然可以将支持的最低 iOS 版本设置为旧版本,但即使在 6.0 之前的设备上运行,您也可能无法使用。

-[UIDevice uniqueIdentifier]自 iOS 5.0 以来已被弃用,因此您有将近 2 年的时间来处理它即将消失的事实。此时尝试潜入另一个使用 UDID 的更新为时已晚。根据您对 UDID 所做的操作,您可能会遇到问题。在新规则的精神内,有几个很好的替换 UDID 的解决方案,但同样,无缝切换到它们的窗口或多或少地关闭了。

即使假设我找到了可以使用的东西,一旦用户升级他的操作系统版本,这个值也会有所不同,这显然很糟糕——同一台设备会有两个不同的 id。

考虑一下不推荐使用 UDID 的原因:用户不希望您能够在未经他们许可的情况下跟踪他们的设备,而 Apple 肯定不希望被视为允许您这样做。因此,如果您确实找到了适合您并且不使用 UDID 的解决方案,如果您的方案不允许用户选择退出您正在执行的任何跟踪,您仍然可能面临被拒绝的风险。

于 2013-04-27T21:14:15.090 回答