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