5月1日之后,Apple将拒绝访问uniqueIdentifier的新应用和更新。他们在iOS 6.x中引入了几个新方法,这很好,但是......如果我需要在较旧版本的SDK上运行我的应用程序怎么办?所以,我的代码看起来像:
if ([UIDevice instancesRespondToSelector:@(identifierForVendor)]) {
deviceId = [UIDevice currentDevice] identifierForVendor];
} else {
// WHAT SHOULD BE HERE?
}
如果是旧SDK,开发人员应该使用什么?此外,即使让我说我找到了一些可以使用的东西,一旦用户升级他的操作系统版本,这个值会有所不同,这显然很糟糕 - 我们会为同一个设备提供两个不同的ID。
答案 0 :(得分:1)
如果是旧SDK,开发人员应该使用什么?
Apple won't accept apps built with an SDK that's more than a few versions old,因此您可能无法使用您正在考虑的SDK。您仍然可以将支持的最低iOS版本设置为旧版本,但即使在6.0之前的设备上运行,您也可能无法使用-uniqueIdentifier
。
-[UIDevice uniqueIdentifier]
已被弃用,所以你已经有将近2年的时间来处理它已经消失的事实。在这一点上试图潜入另一个使用UDID的更新已经太晚了;根据您对UDID的处理方式,您可能会遇到问题。有一些很好的解决方案可以替换符合新规则精神的UDID,但同样,无缝切换到它们的窗口也或多或少是封闭的。
即使让我说我发现使用的价值也会有所不同 一旦用户升级他的操作系统版本,这显然是坏的 - 我们会的 对于同一设备有两个不同的ID。
考虑原因不推荐使用UDID:用户不希望您在未经他们许可的情况下跟踪他们的设备,Apple肯定不希望被视为使您能够做到这一点。因此,如果您做找到适合您并且不使用UDID的解决方案,如果您的方案不允许用户选择退出跟踪您的任何内容,您仍有可能遭到拒绝做的。