iOS关于私有api审核被拒问题解决方案

可能大家都知道iOS提交审核比较严,有些制度必须要遵守,不然就不给你通过,可能严重的还会把你的app打入冷宫。所以请善待你们身边广大iOS开发的同事。哈哈。

皮一下就好,下面就给广大iOS开发一些被打回的问题排查方案,以供参考。

一、问题内容

首先让我们看下面的这条苹果打回的通知信息:

Guideline 2.5.1 - Performance - Software Requirements

Thank you for your resubmission. However, we noticed that the previous issue has not been resolved. 

Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Next Steps

To resolve this issue, please revise your app to provide the associated functionality using public APIs or remove the functionality using the "prefs:root" or "App-Prefs:root" URL scheme.

If there are no alternatives for providing the functionality your app requires, you can file an enhancement request.

Since your App Store Connect status is Rejected, a new binary will be required.

大概意思就是:

您的应用程序使用的是“prefs:root=”非公共URL方案,这是一个私有实体。应用商店不允许使用非公共api,因为如果这些api发生变化,会导致糟糕的用户体验。

继续使用或隐藏非公开的api,在以后提交这个应用程序时,可能会导致你的苹果开发者账户被终止,并从应用商店中删除所有相关的应用。
 

二、删除相关功能替换文件。

接下来你会去全工程找有这个“prefs:root=”玩意儿的地方去改。

1.删除工程里面的相关使用App-Prefs:的地方

   替换[NSURL URLWithString:UIApplicationOpenSettingsURLString]进入到app的相关设置界面。

  你可以在工程里面进行全工程的搜索“App-Prefs”,查找对应的代码出处。然后进行修改。

注意:target里面的info->url Types内部的添加项也记得一并去除。

 

然后我们美美的提交苹果审核,可是又给返回了上面的邮件内容,是审核人员手抖点错了么?然后全文查了一遍没有“prefs:root=”这个东西了,那又是什么问题?

后来猜测静态库里面搜不出来,可能有这个“prefs:root=”代码。由于我们现在的这个项目比较老,很多之前的代码,第三方也有不更新的库文件。种种原因到我手里了。

三、解决问题

(其实这个原因,主要出现于工程中使用的第三方文件问题。)

1.你会问:这我怎么查?又或者是:这我怎么改?

    如果你是用的cocoapods管理的第三方,更新一下最新的第三方库。不要限定特定的版本号(除非你们项目特别要求),这样就可以更新到最新版本。第三方库会将这些问题解决掉的。或者你可以向第三方的支持者提出问题,等待他们的修改。(当然这个问题现在存活的第三方都不会有了,这是为以后遇到的问题解决方向)

 

2.对于怎么查找哪个第三方库出现的问题:

(1)需要你打开终端:

 cd (你要查找项目的文件跟路径)

(2)分别输入以下命令行,来找到使用了 (私有API) 的SDK或者.a的静态库:

(查找(遍历)所有的静态库.a  .svn  .app里面是否包含私有API的这个字段)

find . | grep -v .svn | grep ".a" | grep -v ".app" | xargs grep (私有API)

 

(终端数据内容太多,这里截取重要部分显示)

 

(然后:过滤筛选对应有这个私有API的文件在那个包文件内)

grep -lr "(私有API)" * | grep -v .svn | grep -v .md

 

然后找到对应的问题包文件,进行替换或者重新打包,或者更新处理。

 

然后再次提交苹果审核,顺利通过。完美!


版权声明:本文为qq_20350847原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。