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