ios 应用被拒绝,但我不使用 UDID
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16409966/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
App rejected, but I don't use UDID
提问by Tiago
Today we received a feedback about our submission and we do not understand the reported problem: "Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.".
今天我们收到了关于我们提交的反馈,我们不明白所报告的问题:“应用程序不允许访问 UDID,不得使用 UIDevice 的 uniqueIdentifier 方法。请更新您的应用程序和服务器以将用户与供应商或广告相关联iOS 6 中引入的标识符。”。
We know about the rejections about udid, but our App do not use this! After read this, our team reevaluated the App and we do not found occurrences from "UIDevice uniqueIdentifier". We also revised all used libraries and really we do not find any call from UDID.
我们知道关于 udid 的拒绝,但我们的应用程序不使用它!阅读本文后,我们的团队重新评估了该应用程序,我们没有发现“UIDevice uniqueIdentifier”出现的情况。我们还修改了所有使用的库,实际上我们没有发现来自 UDID 的任何调用。
Someone have ideas?
有人有想法吗?
After research, I executed "greap" command and I am suspecting about FacebookSDK:
经过研究,我执行了“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 uses uniqueIdentifier?? Whats the resolution?
FacebookSDK 使用 uniqueIdentifier?? 分辨率是多少?
回答by scurioni
In My case it was ibGoogleAnalytics_debug.a library.
就我而言,它是 ibGoogleAnalytics_debug.a 库。
To find which library is using uniqueidentifier method, go to your project folder and type in:
要查找哪个库正在使用 uniqueidentifier 方法,请转到您的项目文件夹并输入:
$ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier
I got this: Binary file ./My_Project/libGoogleAnalytics_debug.a matches
我得到了这个:二进制文件 ./My_Project/libGoogleAnalytics_debug.a 匹配
回答by Elad Adi Vaknin
Solved it: The problem is that your project still refer to the old SDK and it compiles the code with your old sdk methods including the UDID which apple rejects.
解决了:问题是您的项目仍然引用旧的 SDK,它使用旧的 sdk 方法编译代码,包括苹果拒绝的 UDID。
Fix it in your build properties of SEARCH PATH Framework Search Paths Library Search Paths
在 SEARCH PATH Framework Search Paths Library Search Paths 的构建属性中修复它
remove unnecessary values such as old sdk path and put there your current sdk path
删除不必要的值,例如旧的 sdk 路径,并将您当前的 sdk 路径放在那里
clean all project's files: Window->Organizer->Project - delete your project Product->Clean
清理所有项目的文件:Window->Organizer->Project - 删除你的项目 Product->Clean
Now rebuild it and resubmit it to apple.
现在重建它并重新提交给苹果。
Enjoy :)
享受 :)
回答by Igor
Check the binary you generated with the strings
command, and look for uniqueIdentifier
:
检查您使用strings
命令生成的二进制文件,并查找uniqueIdentifier
:
$ strings YOUR_BINARY | grep uniqueIdentifier
It is likely you're going to find it in there.
你很可能会在那里找到它。
I found that OpenSSL has a string uniqueIdentifier
declared in their headers, so it's probable your application (or any static library you're providing with your app) has included it.
我发现 OpenSSLuniqueIdentifier
在其标头中声明了一个字符串,因此您的应用程序(或您随应用程序提供的任何静态库)可能已包含它。
In my case the culprit was libspotify
.
就我而言,罪魁祸首是libspotify
.
回答by Tomasz Wojtkowiak
In my case for this problem was responsible BugSense SDK (I used obsolete version). After upgrading to the newest version (3.1.3) everything is ok.
在我的情况下,这个问题是由 BugSense SDK(我使用过时的版本)引起的。升级到最新版本(3.1.3)后一切正常。
回答by roycable
I had the same issue, but was able to pin-point the file containing uniqueIdentifier
using the following command in terminal, within my project folder.
我遇到了同样的问题,但能够uniqueIdentifier
在终端中使用以下命令在我的项目文件夹中精确定位包含的文件。
grep -Rnis 'uniqueIdentifier' *
grep -Rnis 'uniqueIdentifier' *
This echo'd out a bunch of lines in my terminal window, with the culprit being libGoogleAdModAds.a- even though I wasn't actually using it in my code, it was still referenced in my project and therefore added to the build.
这在我的终端窗口中显示了一堆行,罪魁祸首是libGoogleAdModAds.a- 尽管我实际上没有在我的代码中使用它,但它仍然在我的项目中被引用,因此被添加到构建中。
my source was: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory
我的来源是:http: //www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory
回答by Eric
I filed a bug with Facebook, but here is a workaround:
我向 Facebook 提交了一个错误,但这里有一个解决方法:
https://developers.facebook.com/bugs/193119420841692
https://developers.facebook.com/bugs/193119420841692
In the sdk, edit facebook-ios-sdk/src/FBSession.m
在 sdk 中,编辑 facebook-ios-sdk/src/FBSession.m
Comment out the
注释掉
- (BOOL)isMultitaskingSupported {
/*
UIDevice *device = [UIDevice currentDevice];
return [device respondsToSelector:@selector(isMultitaskingSupported)] &&
[device isMultitaskingSupported];*/
return TRUE;
}
Its not needed since IOS 4.0 anyhow.
无论如何,从 IOS 4.0 开始就不需要它了。
that removes the reference, and re-build the .a
删除引用,并重新构建 .a
回答by Suyuan Chang
I have the same issue today. I upgrade AdMob SDK to 6.4.1 and submit again but no use. But it passed upload check after I disabled AdMob code and don't link to its library.
我今天有同样的问题。我将 AdMob SDK 升级到 6.4.1 并再次提交但没有用。但是在我禁用 AdMob 代码并且不链接到其库后,它通过了上传检查。
According to Google's announcement, AdMob SDK 6.4 and above do not access UDID anymore. Obviously, Apple doesn't think so.
根据 Google 的公告,AdMob SDK 6.4 及以上版本不再访问 UDID。显然,苹果公司不这么认为。
回答by JP Illanes
Usually third party libraries for analytics and beta testing use uniqueIdentifier to track users (for example test flight or old versions of GA), check if any of the third party library you are using use this. If is not the case, you can ask for a clarification at http://itunesconnect.apple.com.
通常用于分析和 beta 测试的第三方库使用 uniqueIdentifier 来跟踪用户(例如试飞或旧版本的 GA),检查您使用的任何第三方库是否使用它。如果不是这种情况,您可以在http://itunesconnect.apple.com 上要求澄清。
回答by mskw
This is all Apple does, all you need to do is:
这就是 Apple 所做的一切,您需要做的就是:
strings - -a -arch armv7 "App.app/App" | grep uniqueIdentifier
App.app is after you unzip the App.ipa, it will then be inside the payload directory.
App.app 是在您解压 App.ipa 之后,它将位于有效负载目录中。
Just run that command inside the payload directory. You can do a test by greping a known method you use.
只需在有效负载目录中运行该命令即可。您可以通过 grep 您使用的已知方法来进行测试。
You can substitute armv7to allif you want to search for all architectures it is built for.
您也可以替换的ARMv7到所有的,如果你想寻找它是为所有的内置架构。
回答by mlabraca
I had the same problem yesterday updating my applications.
After search for third parties libraries using UDID I realized I was using Conversion Tracking for iOS. This library used UDID but the the April 10 released an update fixing this problem:
我昨天更新我的应用程序时遇到了同样的问题。
使用 UDID 搜索第三方库后,我意识到我使用的是 iOS 转换跟踪。这个库使用了 UDID,但 4 月 10 日发布的更新解决了这个问题:
The iOS conversion tracking SDK v1.2.0 no longer accesses UDID (released April 10, 2013).
iOS 转化跟踪 SDK v1.2.0 不再访问 UDID(2013 年 4 月 10 日发布)。
I hope it helps.
我希望它有帮助。