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

今天,我们收到了关于我们提交的反馈,我们不理解报告的问题:“应用程序不允许访问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 

FacebookSDK使用uniqueIdentifier ?? 什么决议?

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

要find哪个库正在使用uniqueidentifier方法,请转到您的项目文件夹并input:

 $ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier 

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

解决了这个问题:问题是你的项目仍然参考旧的SDK,并用旧的sdk方法编译代码,包括苹果拒绝的UDID。

修复它在您的searchpathsearchpath库searchpath的生成属性

删除不必要的值,如旧的SDKpath,并把那里你当前的SDKpath

清理所有项目的文件:窗口 – >pipe理器 – >项目 – 删除您的项目产品 – >清洁

现在重build它,并重新提交给苹果。

请享用 :)

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

 $ strings YOUR_BINARY | grep uniqueIdentifier 

很可能你会在那里find它。

我发现OpenSSL在头文件中声明了一个uniqueIdentifierstring,所以很可能你的应用程序(或者你提供的任何静态库)已经包含了它。

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

我有同样的问题,但能够在我的项目文件夹中使用terminal中的以下命令精确定位包含uniqueIdentifier的文件。

grep -Rnis 'uniqueIdentifier' *

这在我的terminal窗口中回显了一大堆线,罪魁祸首是libGoogleAdModAds.a – 即使我没有在我的代码中实际使用它,它仍然在我的项目中引用,因此添加到构build。

我的来源是: http : //www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

在我的情况下,这个问题是负责的BugSense SDK(我用过时的版本)。 升级到最新版本(3.1.3)后,一切正常。

我提交了一个与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以后不需要。

删除引用,然后重新构build.a

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

根据Google的声明,AdMob SDK 6.4及更高版本不再访问UDID。 显然,苹果不这么认为。

通常用于分析和testing的第三方库使用uniqueIdentifier来跟踪用户(例如testing航class或旧版本的GA),检查您使用的任何第三方库是否使用此库。 如果不是这种情况,可以在http://itunesconnect.apple.com上要求澄清。;

我昨天有更新我的应用程序相同的问题。
在使用UDIDsearch第三方库之后,我意识到我正在使用适用于iOS的转换跟踪 。 这个库使用了UDID,但是4月10日发布了一个修正这个问题的更新:

iOS转换跟踪SDK v1.2.0不再访问UDID(2013年4月10日发布)。

我希望它有帮助。

我整天试了一下,我的应用程序总是被拒绝。

首先,我试图find。 | grep -v .svn | grep“.a”| grep -v“.app”| xargs grep uniqueIdentifier在我的项目文件夹中。

Google Analytics,AdMob和Wikitude SDK似乎使用uniqueIdentifier。 所以我删除了GA,并更新了AdMob和Wikitude。 现在,不再有对uniqueIdentifier方法的调用。 当我做grep时,结果是什么都没有。 我清理了我的项目中的所有内容,但我的应用程序总是被拒绝!

我现在能做什么 ? 任何帮助将不胜感激 …

编辑:我发现这一行:

 IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE 

在这个文件中:

MYPROJECT.xcodeproj / project.xcworkspace / xcuserdata / MYUSERNAME.xcuserdatad / UserInterfaceState.xcuserstate

你认为这个问题可以来自这一行?

我不认为Facebook IOS SDK本身使用已弃用的“uniqueIdentifier”。 我在https://github.com/facebook/facebook-ios-sdk查看了资源。;

但是当从这个源生成Facebook SDK时,创build的二进制包含string。 SDK使用的唯一库是 – > Accounts.framework < – 来自IOS本身!

所以看起来苹果已经开始自己的脚了!

编辑: 埃里克给出了正确的答案。 UIDevice用在facebook-ios-sdk / src / FBSession.m中。 Accounts.framework不是问题。

苹果公司就是这么做的,你所要做的就是:

 strings - -a -arch armv7 "App.app/App" | grep uniqueIdentifier 

App.app是解压App.ipa之后,它会在有效载荷目录中。

只需在有效载荷目录中运行该命令。 您可以通过使用已知的方法来进行testing。

如果你想search所有的体系结构,你可以用armv7代替。

今天我面临同样的问题。 openssl中有一个名为uniqueIdentifier的variables。 也许它会导致问题。

我遇到过同样的问题。 原来是RevMob sdk。 最新的5.9.0(2013年5月30日)接缝来解决这个问题。

Interesting Posts