应用程序被拒绝,但我不使用UDID

Tia*_*ago 45 uniqueidentifier app-store udid appstore-approval ios

今天我们收到了有关我们提交内容的反馈,但我们不了解所报告的问题:"不允许应用访问UDID,也不得使用UIDevice的uniqueIdentifier方法.请更新您的应用和服务器,以便将用户与供应商或广告相关联iOS 6中引入的标识符."

我们知道关于udid的拒绝,但我们的应用程序不使用它!阅读本文后,我们的团队重新评估了应用程序,我们没有发现"UIDevice uniqueIdentifier"的出现.我们还修改了所有使用过的库,实际上我们找不到UDID的任何调用.

有人有想法吗?

经过研究,我执行了"greap"命令,我怀疑FacebookSDK:

my-app-directory $ grep -Rnis 'uniqueIdentifier' *
Binary file MyApp/FacebookSDK.framework/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/A/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/Current/FacebookSDK matches
Binary file MyApp/MyApp.xcodeproj/project.xcworkspace/xcuserdata/myuser.xcuserdatad/UserInterfaceState.xcuserstate matches
Run Code Online (Sandbox Code Playgroud)

FacebookSDK使用uniqueIdentifier ?? 决议是什么?

scu*_*oni 86

在我的情况下,它是ibGoogleAnalytics_debug.a库.

要查找使用uniqueidentifier方法的库,请转到项目文件夹并键入:

$ find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier
Run Code Online (Sandbox Code Playgroud)

我得到了这个:二进制文件./My_Project/libGoogleAnalytics_debug.a匹配

  • 这应该是公认的答案,它会切断并修复违规代码. (2认同)
  • 某些第三方库不使用".a"扩展名,而是不使用扩展名.此命令也将在这些文件中找到API用法:`grep -lr"uniqueIdentifier"*| grep -v .svn | grep -v .md` (2认同)

Ela*_*nin 7

解决了问题:问题是你的项目仍然引用旧的SDK,它用旧的sdk方法编译代码,包括苹果拒绝的UDID.

将其修复在SEARCH PATH框架搜索路径库搜索路径的构建属性中

删除不必要的值,例如旧的sdk路径,并将当前的sdk路径放在那里

清理所有项目的文件:Window-> Organizer-> Project - 删除项目Product-> Clean

现在重建它并重新提交给apple.

请享用 :)


Igo*_*gor 5

检查使用该strings命令生成的二进制文件,并查找uniqueIdentifier:

$ strings YOUR_BINARY | grep uniqueIdentifier
Run Code Online (Sandbox Code Playgroud)

很可能你会在那里找到它.

我发现OpenSSL uniqueIdentifier在其标题中声明了一个字符串,因此很可能您的应用程序(或您提供的应用程序中的任何静态库)都包含它.

在我的情况下,罪魁祸首是libspotify.


小智 2

我今天也有同样的问题。我将AdMob SDK升级到6.4.1并再次提交但没有用。但在我禁用 AdMob 代码并且不链接到其库后,它通过了上传检查。

根据Google的公告,AdMob SDK 6.4及以上版本不再访问UDID。显然,苹果并不这么认为。