iTunes App Submission无效的二进制问题

Joh*_*ohn 2 iphone itunesconnect cordova

非公共API使用情况:

不允许应用访问UDID,也不得使用UIDevice的uniqueIdentifier方法.请更新您的应用和服务器,以便将用户与iOS 6中引入的供应商或广告标识符相关联.如果源代码中的方法名称与上面列出的私有Apple API匹配,则更改方法名称将有助于防止此应用在未来的提交中被标记.此外,请注意,上述API中的一个或多个可能位于应用程序附带的静态库中.如果是这样,他们必须被删除.

请帮助我如何避免他的问题.

关心约翰

Leo*_*rey 7

不允许应用访问UDID,也不得使用UIDeviceuniqueIdentifier方法.请更新您的应用和服务器,以将用户与iOS 6中引入的供应商广告标识符相关联

你的回答.

" 从5月1日开始,App Store将不再接受访问UDID的新应用或应用更新.请更新您的应用和服务器,以便将用户与iOS 6中引入的供应商或广告标识符相关联 "

资源

Apple现在阻止任何访问该uniqueIdentifier属性的App UIDevice.使用供应商或广告标识符替换任何事件或使用OpenUDID.

NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor];
NSString *uuidString = [uuid UUIDString];
Run Code Online (Sandbox Code Playgroud)

一些可能有帮助的StackOverflow问题:

如果您还没有使用过uniqueIdentifier,那么它将是一个SDK库调用它.通常来自广告网络,例如Mobclix,AdMob或Smaato.所有流行的广告网络都更新了SDK,删除了uniqueIdentifier.查看他们的网站以获取最新的SDK.

更新

刚刚在评论中看到你正在使用PhoneGap,猜测你还没有更新到最新版本.

确保您使用http://phonegap.com/download/上的最新版本(2.7.0)(2013年4月30日发布)


小智 6

我遇到了同样的问题,Apple给了我一些提示,找出使用"uniqueIdentifier"API调用的地方.即使在二进制库中.

"虽然您可能已从应用程序中删除了对UDID的访问和使用,但无效的二进制消息表明您的应用程序使用或访问了UDID.请检查您的源代码是否出现"uniqueIdentifier"方法;这是返回的方法设备的UDID.

此外,如果要链接外部框架(如广告库),这些第三方库可能正在访问和使用UDID.我们建议您将库更新到最新版本,并使用"nm"工具确定库是否正在调用此方法.

有关"nm"工具的更多信息,请参阅Xcode工具中"nm"工具的手册页:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

此外,如果您无权访问库的源,则可以使用"strings"或"otool"命令行工具搜索已编译的二进制文件."strings"工具可以输出库调用的方法列表,"otool -ov"将输出Objective-C类结构及其定义的方法.这些技术可以帮助您缩小有问题的代码所在的位置."

希望能帮助到你