我听说过一些谣言说 Apple 拒绝使用 iOS5 已弃用方法的应用程序[UIDevice uniqueIdentifier]
。任何人都可以确认他们的应用程序因此而被拒绝吗?我知道使用此已弃用方法的替代方法,但我们的一位客户要求我们使用我们知道使用此方法的第 3 方库。
如果是这种情况,我会感到惊讶,因为 API 方法已被弃用且未设为私有。
我听说过一些谣言说 Apple 拒绝使用 iOS5 已弃用方法的应用程序[UIDevice uniqueIdentifier]
。任何人都可以确认他们的应用程序因此而被拒绝吗?我知道使用此已弃用方法的替代方法,但我们的一位客户要求我们使用我们知道使用此方法的第 3 方库。
如果是这种情况,我会感到惊讶,因为 API 方法已被弃用且未设为私有。
苹果并没有因此拒绝应用程序。我在支持推送通知的应用程序中收集设备 UDID 以及令牌,并且它们都已获得批准。UDID 只是deprecated,这意味着 Apple 最终将不允许您访问它们。一切仍然有效,并将获得批准。
我听说 Apple 弃用了对 UDID 的访问,以防止开发人员和第三方分析师能够识别特定的人。如果真的是因为 iCloud 的问题,Apple 显然会解决这个问题,而不是给其他人带来不便。
编辑:看起来 Apple 拒绝某些应用程序访问设备的 UDID。为了安全起见,我会用它CFUUID
来创建一个随机的唯一标识符。您可以使用NSUserDefaults
或钥匙串来保存它。钥匙串的优点是,如果用户删除了您的应用,钥匙串项不会被删除,因此如果用户重新安装您的应用,您仍然可以访问 UDID。只有当用户恢复他们的设备时,它才会被删除。
在您的应用程序中使用标识符
从 5 月 1 日开始,App Store 将不再接受访问 UDID 的新应用或应用更新。请更新您的应用程序和服务器以将用户与 iOS 6 中引入的供应商或广告标识符相关联。您可以在UIDevice 类参考中找到更多详细信息。
看来,App Review 正在对未经用户许可传输UDID 的应用程序执行此规则(如本文所建议的那样) ,而不是仅调用已弃用 API 的应用程序。
我们正在审查一个应用程序的更新,该应用程序会将设备 UDID 发送到我们的服务器,我们将在该服务器上使用它来索引用户的帐户。我们决定不冒险并更改我们的代码以生成特定于应用程序的唯一标识符,正如有关弃用 UDID 的文档所建议的那样
现在 App 不允许访问 UDID,并且不能使用 UIDevice 的 uniqueIdentifier 方法。请更新您的应用程序和服务器以将用户与 iOS 6 中引入的供应商或广告标识符相关联
NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor];
NSString *uuidString = [uuid UUIDString];
并且必须添加 ADSupport 框架
自 5 月 1 日起,Apple 将拒绝所有访问 UDID 的应用程序。但似乎他们唯一能做的就是检查字符串“uniqueIdentifier”是否在二进制文件中。
因此,即使您不再访问电话的 uniqueIdentifier,但您为一个变量提供了相同的名称,他们也会在二进制文件中找到它并且他们会拒绝它,因为他们无法做到这一点。
如果您想知道二进制文件是否包含它,可以将 .ipa(用于临时部署的导出)的扩展名更改为 .zip,解压缩,然后fgrep -R uniqueIdentifier .
在终端中的 payload/ 文件夹中执行。您也可以在项目文件夹中执行此命令以查找包含该字符串的文件。
这对我有用。