非公共 API 使用警告...阻止上传到 App Store 时的验证?

Posted

技术标签:

【中文标题】非公共 API 使用警告...阻止上传到 App Store 时的验证?【英文标题】:non-public API usage Warning...preventing validation on upload to App store? 【发布时间】:2013-06-05 11:56:13 【问题描述】:

有人在您尝试上传到商店的最新版本中遇到以下问题吗?

1.您的应用包含非公共 API 使用。请检查错误,更正它们,然后重新提交您的申请。

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

因此验证失败且未上传。

【问题讨论】:

【参考方案1】:

Apple 最近禁止开发人员访问设备的 UDID(唯一设备标识符),但一些第三方库尚未更新。特别是,有些人在使用 Google Analytics 时遇到了问题。最近这里的另一个帖子给出了一个很好的答案:App rejected, but I don't use UDID

【讨论】:

【参考方案2】:

似乎最常见的库是 Google Analytics 的调试库 (libGoogleAnalytics_debug.a) - 确保您没有链接到生产版本中的调试版本,而是链接到发布版本(libGoogleAnalytics.a)

我遇到的另一个是 PayPal 的 Mobile Express Checkout Library (MECL)。对于这个没有修复,因为他们似乎不打算更新 MECL 以不使用设备令牌。您必须切换到 PayPal 的 MPL 库或他们的新 SDK(仅限美国)。

要查找有问题的库/框架,请在您的项目文件夹中运行:

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

遍历某些文件夹会有些麻烦,因此请查看输出并手动进入它无法访问的文件夹,然后在其中再次运行它。上面的命令来自this SO answer

【讨论】:

以上是关于非公共 API 使用警告...阻止上传到 App Store 时的验证?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在 payload/appname.app/appname: _terminateWithStatus 中引用了非公共选择器

Apple 在提交应用程序时警告我的应用程序正在使用非公共选择器 [重复]

当我在有效负载中上传应用程序非公共选择器时收到警告

即使使用 API 密钥,Fastlane 上传到 App Store 也会在非交互模式下失败

iOS 应用 - 非公共 API 使用 - 应用引用非公共选择器:cancelButtonClicked、setResult:

应用程序加载器警告:应用程序在 Payload/<Appname>.app/<App name> 中引用了非公共选择器:changeState: