今天,我们收到了有关我们提交反馈,我们不理解所报告的问题:“应用程序不允许访问UDID,不得使用的UIDevice的唯一标识符方法请更新您的应用程序和服务器的用户与供应商或广告相关联。在IOS 6中引入“标识符。
我们已经了解了UDID的拒绝,但我们的应用程序不使用此功能! 阅读后,我们的团队重新评估的应用程序,我们不从发现“的UIDevice唯一标识符”出现。 我们还修订了所有用于图书馆和我们真的没有找到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
FacebookSDK使用唯一标识符? 什么分辨率?
Answer 1:
在我的情况下,它是ibGoogleAnalytics_debug.a库。
为了找到这些库使用的唯一标识符的方法,去你的项目文件夹,然后键入:
$ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier
我得到这个:二进制文件./My_Project/libGoogleAnalytics_debug.a匹配
Answer 2:
解决了这个问题:问题是,你的项目仍引用旧的SDK,它与编译旧的SDK方法,包括苹果公司拒绝UDID的代码。
修复它在搜索路径框架搜索路径库搜索路径的你构建属性
除去如旧SDK路径不必要的价值观,并把在那里,你当前的sdk路径
清理所有项目的文件:窗口 - > Organizer->项目 - 删除项目产品 - >清洁
现在,重建它,并重新提交给苹果。
请享用 :)
Answer 3:
请您与生成的二进制strings
命令,并查找uniqueIdentifier
:
$ strings YOUR_BINARY | grep uniqueIdentifier
很可能你会发现它在那里。
我发现了OpenSSL,串uniqueIdentifier
在他们的头声明,所以它很可能您的应用程序(或您与您的应用程序提供任何静态库),包括了它。
在我的情况的罪魁祸首是libspotify
。
Answer 4:
在我的情况下,这个问题负责BugSense SDK(我用的过时的版本)。 升级到最新版本后(3.1.3)一切正常。
Answer 5:
我有同样的问题,但能够针点包含该文件的uniqueIdentifier
在终端使用下面的命令,我的项目文件夹中。
grep -Rnis 'uniqueIdentifier' *
这回显了一堆线在我的终端窗口中,罪魁祸首是libGoogleAdModAds.a -即使在我的代码我并没有真正使用它,它仍然在我的项目中引用,因此添加到构建。
我的来源是: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory
Answer 6:
我申请的错误与Facebook,但这里是一个解决办法:
https://developers.facebook.com/bugs/193119420841692
在SDK中,编辑Facebook的IOS-SDK / src目录/ FBSession.m
注释掉
- (BOOL)isMultitaskingSupported {
/*
UIDevice *device = [UIDevice currentDevice];
return [device respondsToSelector:@selector(isMultitaskingSupported)] &&
[device isMultitaskingSupported];*/
return TRUE;
}
因为IOS 4.0无论如何它不是必要的。
该去除该引用,并重新构建.A
Answer 7:
今天我有同样的问题。 我升级的AdMob SDK 6.4.1并再次提交,但没有用。 但它通过上传检查后,我禁用AdMob广告代码,并没有链接到它的库。
据谷歌宣布,AdMob广告SDK 6.4及以上不访问UDID了。 显然,苹果并不这么认为。
Answer 8:
通常用于分析和beta测试使用的唯一标识符第三方库来跟踪用户(例如飞行测试或旧版本的GA),检查是否有第三方库使用的是利用这个。 如果不是的话,你可以要求澄清在http://itunesconnect.apple.com 。
Answer 9:
昨天我有同样的问题来更新我的应用程序。
搜索使用UDID第三方库后,我意识到,我使用iOS转化跟踪 。 该库使用UDID,但4月10日发布了一个更新解决这个问题:
在iOS转化跟踪SDK V1.2.0不再访问UDID(发布2013年4月10日)。
我希望它能帮助。
Answer 10:
我尝试了所有的日子,我的应用程序总是被拒绝。
首先,我试图找到。 | grep的-v的.svn | grep的名为 “.a” | grep的-v “的.app” | xargs的grep的唯一标识符在我的项目文件夹中。
看来,谷歌Analytics(分析),AdMob和Wikitude SDK使用唯一标识符。 所以我删除GA,和我更新AdMob和Wikitude。 现在,没有更多的调用唯一标识符方法。 当我这样做的grep,结果是一无所获。 我在清理我的项目的一切,但我的应用程序总是被拒绝!
我现在能做什么 ? 任何帮助将不胜感激 ...
编辑:我发现这行:
IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE
在这个文件中:
MYPROJECT.xcodeproj / project.xcworkspace / xcuserdata / MYUSERNAME.xcuserdatad / UserInterfaceState.xcuserstate
你认为问题可能来自这条线?
Answer 11:
我不认为Facebook的IOS SDK本身使用过时的“唯一标识符”。 我看着在源https://github.com/facebook/facebook-ios-sdk 。
但是,当从该来源产生了Facebook SDK,创建二进制包含字符串。 唯一的库,即使用的SDK是 - > Accounts.framework < - 从IOS本身!
所以,看起来苹果已经打出自己的脚!
编辑: 埃里克给出了正确的答案。 的UIDevice在Facebook的IOS-SDK / SRC / FBSession.m使用。 该Accounts.framework是没有问题的。
Answer 12:
这是所有的苹果呢,你需要做的是:
strings - -a -arch armv7 "App.app/App" | grep uniqueIdentifier
App.app是您解压缩App.ipa后,它就会成为有效载荷目录内。
只要运行有效载荷目录内该命令。 您可以通过greping使用已知的方法做一个测试。
您也可以替换的ARMv7 所有 ,如果你想寻找它是为所有的内置架构。
Answer 13:
今天,我面临着同样的问题。 有一个名为UNIQUEIDENTIFIER OpenSSL中的一个变量。 也许是造成问题的原因。
Answer 14:
我遇到过同样的问题。 它原来是RevMob SDK。 最新的5.9.0(2013年5月30日)接缝解决问题。
文章来源: App rejected, but I don't use UDID