【问题标题】:iTunes App Submission Invalid binary issuesiTunes 应用程序提交无效的二进制问题
【发布时间】:2013-05-03 04:27:16
【问题描述】:

非公开 API 使用:

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

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

问候 约翰

【问题讨论】:

  • 你使用的是UIDevice的uniqueIdentifier方法吗?如果是这样,您可能希望改用identifierForVendor。这个错误很好地描述了这个问题——我会再读一遍。
  • 我使用基于 phonegap 的应用程序创建了应用程序。
  • 我已成功将 version1.0 上传到 iTunes,但现在苹果不会接受我的二进制文件
  • 那么最后一部分可能特别适用(如果你认为你没有在代码中的任何地方使用uniqueIdentifier):“请注意,上述一个或多个API可能位于包含在您的应用中的静态库”,尤其是在您使用的是旧版本或最近未更新的插件时。

标签: iphone cordova app-store-connect


【解决方案1】:

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

这就是你的答案。

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

Source

Apple 现在阻止任何访问UIDeviceuniqueIdentifier 属性的应用程序。用Vendor or Advertising 标识符替换任何出现的地方或使用OpenUDID

NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor];
NSString *uuidString = [uuid UUIDString];

几个可能有帮助的 StackOverflow 问题:

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

更新

刚刚在cmet中看到你正在使用PhoneGap,猜你还没有更新到最新版本。

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

【讨论】:

    【解决方案2】:

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

    “虽然您可能已经从您的应用程序中删除了对 UDID 的访问和使用, 无效的二进制消息表明您的应用使用或访问 UDID。请检查您的源代码是否出现 “唯一标识符”方法;这是返回设备的方法 UDID。

    此外,如果您要链接外部框架,例如 广告图书馆,这些第三方图书馆可能正在访问和 使用 UDID。我们鼓励您将您的库更新到最 最新版本并使用“nm”工具确定库是否 正在调用此方法。

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

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

    此外,如果您无权访问库的源代码,您可以 可以使用“strings”或“otool”搜索编译后的二进制文件 命令行工具。 “字符串”工具可以输出一个列表 库调用的方法和“otool -ov”将输出 Objective-C 类结构及其定义的方法。这些 技术可以帮助您缩小问题代码的范围 居住。”

    希望对你有帮助

    【讨论】:

    • 谢谢Ishara,你能解决这个问题吗?我不太擅长剧本。字符串命令和 otool。如果你能帮助我,请告诉我。谢谢
    • 在您的 xCode 项目的根文件夹中,执行 find . -name "*.a" -print 以找到 .a 库。对于每个产生的<library>,执行strings <library> | grep unique 以查看方法调用是否存在。我没有发现 otool -ov <library> 有用 - 事实上,它在一个库上崩溃了。
    【解决方案3】:

    我正在使用这种方法来创建唯一标识符。

    现在不允许这样做吗?一个月前发布了我的应用程序的早期版本。

    - (NSString *)uuid
    {
        CFUUIDRef uuidRef = CFUUIDCreate(NULL);
        CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
        CFRelease(uuidRef);
        return [(NSString *)uuidStringRef autorelease];
    }
    

    我还能用什么来创建唯一标识符。

    干杯

    肖恩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多