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

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

问题描述:

今天我们收到了关于我们提交的反馈,并且我们不理解报告的问题:“应用程序不被允许访问UDID,并且不能使用UIDevice的uniqueIdentifier方法。更新您的应用程序和服务器,将用户与iOS 6中引入的供应商或广告标识符相关联。“。应用程序被拒绝,但我没有使用UDID

我们知道关于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使用唯一标识符?这个决议是什么?

+6

您是否在使用可能包含UDID的第三方库或类? – sangony 2013-05-07 02:15:04

+0

您是否将任何东西,可能是您正在构建的东西从应用程序传递到识别iPhone的服务器? – GoZoner 2013-05-07 02:40:51

+1

也许有些分析库? – Undo 2013-05-07 03:45:54

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

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

+0

升级AdMob SDK为我解决了这个问题。我想你可能有另一个使用uniqueIdentifier的第三部分库。 – 2013-05-07 17:21:27

+0

我今天提交了前几天被拒绝的相同二进制文件,但未被拒绝。我想这个问题是在iTunes连接端,而不是在admob库中。 – hectr 2013-05-14 07:25:35

+0

我用相同的AdMob SDK提交了一个新版本,iTunes连接没有抱怨。我认为问题出在iTunes连接上,他们已经像其他人所说的那样解决了问题。 – 2013-05-23 03:00:05

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

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

+0

你有没有机会使用libspotify?我发现它是我今天提交的罪魁祸首。 – Igor 2013-05-07 15:05:11

+0

感谢您的所有答案。 – Tiago 2013-05-08 18:13:28

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

$ strings YOUR_BINARY | grep uniqueIdentifier 

很可能你会发现它在那里。

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

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

+0

如何使用String命令?我有一个xyz.app然后?我使用$ strings xyz.app | grep uniqueIdentifier并获取不能映射文件:xyz.app(无效参数)。谢谢 – Mangesh 2013-05-09 06:59:45

+0

在“.app”目录中搜索与您的应用名称相同的文件。假设我的应用程序名为“Foo.app”,请运行“find Foo.app -type f -name Foo”,然后针对它运行字符串。 – Igor 2013-05-10 20:43:11

+0

@Igor - 我似乎有与libspotify相同的问题。它不在我的源代码中的任何地方使用明文,所以它似乎在libspotify二进制文件中。你找到解决方案吗? – Grav 2013-05-10 22:07:02

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

+0

感谢Tomasz的澄清,实际上最新版本的插件是3.3.1你可以下载它并阅读发布说明http://www.bugsense.com/releases/ios/3.3.1 – PanosJee 2013-05-08 07:41:56

+0

谢谢 – Krish 2013-06-11 15:12:00

解决了它: 问题是您的项目仍然参考旧的SDK,并且它会使用旧的sdk方法(包括苹果拒绝的UDID)编译代码。

修复它在搜索路径 框架搜索路径 库搜索路径的你构建属性

去除如旧SDK路径不必要的价值观,并把在那里,你目前的SDK路径

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

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

享受:)

我有同样的问题,但能够针点在终端使用以下命令包含uniqueIdentifier的文件,我的项目文件夹中。

grep -Rnis 'uniqueIdentifier' *

这回显了一堆线在我的终端窗口中,罪魁祸首是libGoogleAdModAds.a - 即使在我的代码我并没有真正使用它,它仍然引用在我的项目中,因此添加到构建。

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

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

要找出哪个库使用的唯一标识符的方法,去你的项目文件夹,然后键入:

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

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

+2

这应该是被接受的答案,它贯穿始终,并且指定了违规代码。 – MobileVet 2013-05-09 18:14:32

+0

是否存在误报的空间?Millennial SDK(v5.0.1)正在被抛出,即使在他们声称已不再使用 – Emanuel 2013-05-14 03:15:16

+2

某些第三方库不使用“.a”扩展名,而是不使用扩展名。该命令还会在这些文件中查找API使用情况: 'grep -lr“uniqueIdentifier”* | grep -v .svn | grep -v .md' – CornPuff 2013-06-25 22:01:45

我昨天更新我的应用程序相同的问题。
使用UDID搜索第三方库后,我意识到我正在使用Conversion Tracking for iOS。此库使用UDID,但4月10日发布了修复此问题的更新:

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

我希望它有帮助。

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

首先,我试过找。 | 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由此源生成时,创建的二进制文件包含该字符串。 SDK使用的唯一库是 - > Accounts.framework < - 来自IOS本身!

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

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

我申请的错误与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以来就不需要它了。

,去除参考,并重新建立。一

这是所有的苹果呢,你需要做的是:

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

App.app是你解压缩后的应用程序。 Ipa,它将在有效载荷目录内。

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

,如果你想寻找它是为所有的内置架构可以替代的ARMv7所有

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

+0

嗨!这不是一个答案,请将其转换为评论。 – vav 2014-12-23 14:21:02