美文网首页iOS学习专题iOS 收集专题iOS 历代特性·适配·上架
如何在苹果审核多次被拒被警告的情况下通过审核

如何在苹果审核多次被拒被警告的情况下通过审核

作者: EricLin18 | 来源:发表于2017-07-28 00:45 被阅读662次

    We will reject apps for any content or behavior that we believe is over the line. What line, you ask? Well, as a Supreme Court Justice once said, “I'll know it when I see it”. And we think that you will also know it when you cross it.摘自苹果审核指南 https://developer.apple.com/app-store/review/guidelines/

    是的,苹果才是真爸爸。
    苹果App审核指南每年都会不定期地调整几次。通常在调整后,管理员登录developer后台,会收到苹果的推送让你点击“OK”,不过谁又会去仔细阅读那么一长段的指南呢?都是去ASO上看看好心人翻译提炼后的文章,顶多事后再去原文翻翻确认一下吧。
    17年6月WWDC前后有一波常规调整。此次调整后审核流程加强了 自动化扫描关键字 的能力,我们团队一个月内连续两个版本、三个APP,提审近30次被拒。其中有被第三方SDK坑害的,也有我们自己一些“no zuo no die”自作聪明的行为惹怒了审核员的。好在最后经过不懈的修改和与审核团队沟通,终于通过。
    总结一些有意思的点,供参考。

    为什么被拒

    1.私有API

    不允许使用私有API
    私有API包括两种,一种是代码中(包括第三方库)使用了与苹果私有API相同命名的API。另一种是代码中(包括第三方库)的确使用了私有API,这类私有API有可能在低版本iOS中是公开API,高版本被苹果私有化,要引起注意。

    "2.5.1 Apps may only use public APIs and must run on the currently shipping OS. Learn more about public APIs. Keep your apps up-to-date and make sure you phase out any deprecated features, frameworks or technologies that will no longer be supported in future versions of an OS."

    2.防审核

    不允许使用基于绕开审核的技术,或利用隐藏功能来规避审核被拒风险。

    "2.3.1 Don’t include any hidden or undocumented features in your app; your app’s functionality should be clear to end-users and App Review. Egregious or repeated behavior is grounds for removal from the Developer Program. We work hard to make the App Store a trustworthy ecosystem and expect our app developers to follow suit; if you’re dishonest, we don’t want to do business with you."

    3.远程下载可执行代码

    不允许远程下载可执行代码

    "2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other apps. Apps designed to teach, develop, or test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user."

    4.在App store外升级APP

    不允许使用第三方APP升级。不允许 包含 第三方可升级APP的平台的任何代码,哪怕你没有实际在使用升级功能。如蒲公英pgyer SDK。

    违反的也是上一条"2.5.2"

    审核手段

    1.人工

    苹果人工审核一般情况下会持续10分钟到1小时不等,更多数情况下在10多分钟左右。
    人工审核会对主要界面进行肉眼审核,一些常见的审核点都在人工审核范围,如网络可用性、抽奖等商业活动是否声明与苹果无关、不能出现beta测试字样、不能出现安卓Android字样、符合年龄分级且不违反当地法律等等。并且很大可能性会对主流程进行验证,比如电商类App,审核员可能会下单小金额产品,并尝试进行支付。
    虽然可能性不大,但最严重的情况是:任何只要是审核员主观认为不合适的内容,都会被拒。

    2.自动化

    自动化审核主要是扫描关键字,私有API、被封杀的第三方平台(pgyer)、违规关键字对应的key(如被审核员发现"iosDownUrl":"http://www.pgyer.com/xxx"这种键值对,那么单纯删除value:"http://www.pgyer.com/xxx"没用,苹果会因为iosDownUrl这个key拒绝,所以key也得删除)。

    3.抓包

    抓包并不是常用手段。但综合审核被拒经验来看,苹果也会用抓包的方式审核http接口的path、接口字段key与value。
    比如接口中有“audit”字段,审核员人为判断为基于“防审核”的功能,从而拒绝。

    审核员

    审核员会中文,但与他/她邮件沟通时,最好附上中文+英文,以免无效沟通浪费时间。
    审核员工作时间是美国西部时间(比北京时间慢15小时)的白天8小时制,周一至周五。其他时间不审核。
    审核员是人,就会有脾气。审核员的权利也很大,可以自主决定对app的违规行为进行处罚,如果审核员认为app违规严重可能除以延期审核、下架、封号等处罚。
    审核员会测试APP的主要流程,应该把审核员当做一位用户对待,不要将错误的页面、流程展现给审核员。
    对于被拒的app,将会由该审核员一直跟进到审核通过。通过申诉渠道,app会被提交到“审核委员会”评判。

    沟通渠道

    1.Resolution center 邮件

    与苹果审核团队的沟通渠道主要是通过itunes connect中的Resolution center(解决方案中心),在其中用邮件的形式进行解释说明回复。并可以附上附件,比如一些截图、简单的数据txt文档。

    2.App 审核信息 section

    注意:在每次提交审核时,将附件和备注说明都填写在“App 审核信息”栏目里,这是最好的方式。(新版本会继承老版本的内容,如无改变则无需再次填写)

    3.电话

    有时,苹果审核员会主动打电话给开发者,给予一些审核被拒修改建议。打电话的原因,猜想可能是审核员因为规避一些商业冲突纠纷,不方便书面回复。比如此次通过关键词扫描封杀蒲公英(pgyer),就是审核员通过电话直接说明“pgyer”关键词。
    苹果审核员可能会留下他们自己的联系方式,如果有需要也可以打给他们。要开通国际漫游,且可能需要多打几次才会接听。
    苹果审核员强调自己不解答任何技术问题,他们只会对app所违反的条例进行简单解释,至于对如何修改代码,则不会给予任何建议。需要运气好的话会给一点点提示。所以这也是最麻烦的地方,对于苹果不明讲的问题,只能一次次分析、一次次删除,一次次提交。踩坑积累经验。

    防审核

    可以明确,这种行为是欺骗,情结更严重。被审核出来会直接导致严厉处罚,而不仅仅是审核被拒绝。
    有人说“防审核”与“ABTest”,审核员怎么区分呢?首先,审核员就像美国的大法官,他说有罪就是有罪。其次,审核员会用抓包分析、扫关键字的方式进行主观判断,比如App启动阶段请求的接口中有“audit”、“luaScruptZip”等字段,就被审核员直接指出,这是“以绕开审核”为目的的行为。
    删除这些字段和本地防审核功能也不行,直到删除该接口,才得以成功。

    处罚

    通常的审核被拒,只需要修改后重新提交即可。如果严重违规,比如使用欺骗方式、多次反复违反审核规则,苹果审核会对app甚至itunes整个账号做出处罚。

    1.延期审核

    延期审核经过亲身体验大约会延期2个工作日。

    2.下架app、封停itunes账号

    下架app和封停itunes账号,具体时长官方没有说明,网上的说法从几天到几个月不等(360当年被苹果下架封号好几个月,也有人说1年)

    申诉

    对被拒的app,采用申诉的办法可以将app提交到“审核委员会”。
    建议首先还是应该将明确的审核违规问题改好。如果确认是当前审核员误解了app的用意,可以提交申诉,邮件说清楚理由。

    热更新

    苹果禁止热更新app。热更新一定程度上也是绕开审核的行为,且对用户有一定的安全风险。
    目前苹果的态度是禁止 通过下载可执行代码来修改Native代码而达到更新功能的行为。所以JSPatch中枪被封杀,ReactNative热更新存活。
    但这只是目前,以后如何发展尚不明确。

    预审核

    预审核是通过一个工具,自动化对整个APP的代码(包括第三方库)进行自动化检测,对于可以违规关键字、私有API等进行扫描并反馈结果。

    ====
    最后
    有人说处理审核被拒要心大。
    在我看来,首先一定是要对“苹果审核”这件事心存尊敬和感激。正是因为苹果将用户、将整个App store的质量&秩序放在第一位,才有了今天这么好的iOS App。
    其次,不要试图绕开审核、欺骗审核。一定要老老实实把问题改掉,合规上架才是王道。
    最后,跟审核员邮件沟通一定要注意表明自己正确的改正态度,记住审核员也是人。

    相关文章

      网友评论

      • 就是一个春天的花朵:我已经心力交瘁了楼主,最近两周被拒了3次了,买了蒲公英的专家预审+加速审核,结果周一来还是被拒了
      • 海龙lv:你好,遇到这个问题怎么解决?苹果是怎么知道我的隐藏的网页的呢?还是说网页加载外部内容就是不行?Guideline 2.3.1 - Performance

        We discovered that your app contains hidden features.

        Specifically, this app contains hidden functionality to load a webview of external content within the app. It would be appropriate to ensure that all features and functions in the app are visible and fully accessible during review.
        海龙lv:@EricLin18 我用时间来判断的主窗口的。开关控制字段是根据什么来判断的,根据这个属性的英文翻译?也就是说我换成拼音或者乱拼的 就不会查出这个开关控制的字段了吧?有什么有用的解决的办法吗?我在appstore上能搜发哦很多这样的应用
        EricLin18:解决方法就是把这些可疑的,或者的确是隐藏的功能都删除,苹果不一定会直接指出具体哪些功能是他认为的“隐藏功能”。
        EricLin18:1,会扫你的代码,可疑关键字扫描;
        2,会抓包看你APP启动时候的接口,看有没有可疑的开关控制字段。
        如果你的确有隐藏的功能,那么也一定有开关来控制。苹果会查出来的。
      • ea14efb1a711:打电话人员和审核人员,不知是否为一个人
      • 看起来是1点都不友善:伪装包更不好过了==
      • CoderXYF:你好,请问你理解苹果下面这段话的意思吗?
        Guideline 2.3.1 - Performance


        We discovered that your app contains hidden features. Specifically, this app references an app piracy storefront.
        CoderXYF:@EricLin_NJ 好的灰常感谢~
        EricLin18:应该是说App中有一个隐藏功能,且这个隐藏功能与盗版APP商店有关。
        有可能是用了第三方SDK,这个SDK有(或曾经有)这个功能。
        这种被拒比较严重,苹果一般会延期审核。
      • CoderXYF:写的很好,对于苹果开发提审很有帮助!

      本文标题:如何在苹果审核多次被拒被警告的情况下通过审核

      本文链接:https://www.haomeiwen.com/subject/vyntlxtx.html