攻略前情摘要

作者『风海铜锣』在苹果 AppStore 上架一款浏览器 App,历尽艰辛两次上架提审成功,在此分享其中经历的过程,希望对大家有所帮助。

本篇文章是作者前一篇《2021年注册新iOS开发者账号和上包经历记录 》的续集。

2021年遭遇苹果审核2.3.1的开发过审经历

作者:风海铜锣

在今年注册了新的开发者账号,并且审核一次通过后,万万没想到我要经历为期13天和2.3.1作斗争的经历。期间几度摸不着北,查阅了网上国内国外几十篇别的网友发的相关心得,并和各路网友交流,尝试了种种办法,最后总算艰难突破。所以觉得有必要水一篇文章记录一下经过。

首先介绍一下产品的基本情况。

  • 产品类型:工具、浏览器

  • 版本迭代:第二版

  • 功能更新:追加视频嗅探和下载功能,产品改名

  • 审核结果:2.3.1 和 4.3

首次改动

提交审核后立刻遇到2.3.1和4.3,对于4.3我是有丰富的心得经验的,这次产品名我原计划用某些热门词汇的”谐音词“来蹭一蹭前期热度,理论上这种做法属于可判可不判的灰色地带,但是既然判了,那也没什么好说的。所以立刻把产品名恢复为原来的产品名。

更关键的是2.3.1,如前所述,我在产品里追加了视频嗅探下载功能,确实这是个非常敏感的功能,因为网络资源的下载涉及到一个版权敏感问题,此前我认为浏览器在这方面或许有一定的规避属性,大不了加个白名单,对于可能侵权的部分进行白名单处理即可,但是想不到苹果的审核反应竟是这么的明确。

这里贴一下本次2.3.1的内容摘要

Guideline 2.3.1 - Performance

We noticed that your app may contain hidden features, functionality, or content. Specifically, your app allows users to save or download music, video, or other media content without authorization from the relevant third-party sources.

没话说,这个功能宁可不要了,也要保住产品的正常迭代。

于是我立刻动手删除了视频嗅探的相关功能,再次提交审核。

反复被拒

接下去发生的事情,如果我一一记录,就显得过于冗余了。整个过程就是我删代码,然后苹果继续说我包含视频下载功能,我继续删,苹果维持原判。

最后,我不得不通过回复面板询问苹果究竟是什么情况,我已经彻底删除了和视频下载有关的代码,为什么还会说我包含视频下载功能?

我的措辞大致如下:

Dear reviewers, I have fully checked the code and removed the code related to video downloads as required, but the review was rejected. Can you provide some tips and what changes should I make?

而苹果的回复是清一色的:

Thank you for your reply. We continue to find that your app may contain hidden features, functionality, or content. Specifically, your app allows users to save or download music, video, or other media content without authorization from the relevant third-party sources.

往复回合持续了4到5次,直到我把有关联的代码清理的干干净净了,苹果依然直接给出了同样的答复。

发起申诉

事到如今我已经无计可施了,我想既然我已经自认有理了,没有必要卑微的不断自砍一刀。所以直接发起了申诉。

申诉文案大致如下:

As a browser, my app provides download functions provided by normal websites (such as online storage), and these downloads are considered permitted. For video sites, this browser does not provide any download function, nor does it allow users to download videos through any means, and only allows online viewing.

总的来说因为我的英文本就不太够用,这次表达总体来说是失败的。

才隔了一天,审核中心收到请求并确认处理后,立刻收到回复:

Guideline 2.3.1 - Performance

We noticed that your app may contain hidden features, functionality, or content.Specifically, your app includes content that is considered pornographic.

注意这句your app includes content that is considered pornographic,回复结果让人震惊,怎么反复拉锯的“视频下载”忽然变成了“色情”了。

继续被拒

围绕着新的审核结果,我又针对性的寻找和“色情”有关的蛛丝马迹。

由于浏览器默认会唤起百度首页,于是我怀疑是否是因为百度的新闻推送偶尔出现的软色情信息?于是直接把首页给替换了。

但是这样删改之后,审核结果却依然是:

Thank you for your reply. We continue to find that your app includes content that is considered pornographic.

这就很无语了,而且我也不服气了,因为实在不想用英语回复了,在咨询若干网友后,确认其实回复面板用中文回复也没什么问题后,我开始组织中文进行如下回复:

尊敬的审核人员,您好。

这一次我们再次收到审核被拒通知“Guideline 2.3.1 - Performance”,在这里澄清一下,我们未对本软件的任何内容进行隐藏,我们对应用第三方库实现也进行了复查(我们目前仅引入了一个第三方库),确认第三方库全部符合应用程序商店审查指南和苹果开发者计划条款。

且第三方库的隐私政策在这里:https://www.umeng.com/page/policy

关于您提出的“your app includes content that is considered pornographic.”,这一点我们非常不认同,我们开发的应用是一款浏览器。浏览器呈现的内容由网站决定,浏览器本身并不提供内容,更不可能擅自提供、隐藏色情内容!

尊敬的审核人员,如果您坚持认为我们的产品违规,可否请提供一下违规的具体提示,不管是截图、可能产生误会的敏感词等,这将对我们有莫大的帮助。

顺祝愉快。

次日凌晨,审核面板回复了,依然是被拒,但是文案却改变了:

Thank you for your reply. We continue to find that your app contains hidden features or functionality that can change the behavior of the app after review. To resolve this issue, it would be appropriate to ensure that all features and functions in the app are visible and fully accessible during review.

这次的文案只提隐藏特性,却没有提到“色情”和“视频下载”了。

忍无可忍的回滚版本

考虑到我第一版审核通过的如此顺畅,怎么到了第二版就这么艰难?既然如此,不如把代码回滚到第一版审核通过的版本。只保留两项改动

  1. App Icon换成新的 。

  2. App Store的关键字等更新 。

意想不到的是,提交审核后依然被拒:

Guideline 2.3.1 - Performance
We noticed that your app may contain hidden features, functionality, or content.
The App Store ecosystem is built on trust and users should never be misled about the apps they download. Attempting to hide features, functionality, or content in your app may lead to removal from the Apple Developer Program.

总而言之,又是2.3.1,但是不提具体原因,既没有说“色情”,也没有说“视频下载”。

持续回复的结果

到这里我开始寻思,第一版本审核通过了,说明产品本身的问题应该是不大的,第二版本提供了“视频下载”功能导致了2.3.1,原本无可厚非,但是后续不断修改后还一直驳回,即便回撤版本也不奏效了,那就说明开始时遭遇了规则明确的2.3.1后,后续的审核拒绝是某种审核惯性使然,已经不是改回第一版就能解决了。

出于这个考虑,我于是下定决心不再改动代码了,直接在回复面板和审核人员据理力争,中间经过两次继续遭拒后,我在回复面板中写下如下的话:

尊敬的审核人员,我不知道因为什么原因导致你会认为我开发的产品实现了某种“隐藏”特性,在此我必须声明,我开发的产品并没有任何主观设计的“隐藏”功能,我本人也强烈反对“隐藏功能”这一破坏市场秩序的行为。

但是确实不排除某些第三方库可能存在这类行为,因此我在引入第三方库时非常谨慎,目前引入的仅仅是Umenghpple。(我会在附件提供这两个库的截图)。如果需要,我会果断移除这两个库的代码。但是目前经过我的考察,它们不大可能导致我的产品出现隐藏开关的情况。

我在上网查阅资料时,得知某些产品因为代码中含有WebView以及evaluateJavascript而触犯2.3.1规则,在此本人需要解释一下,本人开发的产品是一款浏览器,而浏览器通过WebView实现基础功能,通过evaluateJavascript实现脚本运行是合理且必要的。如果是因为这个原因导致2.3.1违规,我认为需要根据具体产品案例进行分析。

如果是因为别的原因导致我的产品触犯了2.3.1,可否请你提供具体的细节,比如某些函数命名出现敏感词之类的,帮助我完成审核,这将对我帮助很大。

另外,提供一下我的手机号码 +86-xxxxxxxxx,如果你能电话联系达到更好的沟通效果,我会非常感激。

发出这篇冗长的回复后,静候消息,结果次日凌晨(2021-07-05),我居然收到了邮件。

The status of your app, xxxx, is now “Ready for Sale”.

以上就是本人这13天经历的审核历程,13天说长不长,苹果审核效率也是极高,除了发起申诉的那一次是两天时间,几乎每一次都是在当天夜里1到2天就出结果。但是整个过程却非常煎熬,所幸结局是美好的,总算通过了审核。相信经过这次后,接下去的审核会比较顺利……吧?

光是记录这一过程就说了那么多,在此期间我查阅了大量网上的经验,自己也做了不少总结。之后会单独开一篇进行记录。

- 完 -

Creator星球游戏开发社区,欢迎大家投稿分享技术,让我们链接到更多的伙伴,助力开发者技术精进,知识变现!

  • Creator游戏开发教程PDF免费下载(800+页)

  • 超实用的折纸翻书,开发出这款漫画绝对爆了!

  • 编写高效 TS 的一些建议

  • JavaScript 内存详解 & 分析指南

  • Creator 2.x 大项目卡顿有救了!

过审AppStore到底有多痛,经历过就知道了!相关推荐

  1. 单元测试,写起来到底有多痛?你会了吗

    到底什么是单元测试 这个问题看似非常简单,单元测试嘛,不就是咱们开发自己写些测试类,来测试自己写的代码逻辑对不对. 这句话没有问题,但是不够准确. 首先我们要明白,这个测试二字前面还有两个字:单元. ...

  2. 该死的单元测试,写起来到底有多痛?

    今天带大家看看单元测试到底该怎么写. 到底什么是单元测试 这个问题看似非常简单,单元测试嘛,不就是咱们开发自己写些测试类,来测试自己写的代码逻辑对不对. 这句话没有问题,但是不够准确. 首先我们要明白 ...

  3. 达内培训php怎么样,深圳达内php培训到底怎么样 说说亲身经历感受

    基本语法 界定符: 标识一个正则表达式的开始和结束,用'/'或'#'或'{}',因为语法'{}'也可能是正则表达式的运算符,为了避免混淆,所以不建议使用.建议的用法如下: 原子: 可见原子:Unico ...

  4. 用于图像描述的注意上的注意模型《Attention on Attention for Image Captioning》

    <Attention on Attention for Image Captioning> Tiám青年 2019-11-17 23:21:10 2108 收藏 5 分类专栏: 计算机视觉 ...

  5. input框传值是怎么才能是整形_做了这些项目,到底多久才能化妆?

    要说变美有两招最好用:一是化妆,二是整形.化妆能让长相普通的妹子变个大美妞,但程序繁琐的很,手残宝宝都表示好心累.整形就不一样了,不用左一层右一层的涂粉底神马的,绝对是手残党的福利,最最重要的是还美得 ...

  6. 无题(2012.5.11 摘自 人人网)

    "最孤独的时刻,没有谁来陪伴你:最伤心的时候,也没有谁来呵护你.只有你自己,经历着一切必经的经历:只有靠自己,才能回答一切生命中的难题!只有靠自己,在失败时给自己打气:常常问问自己,什么才是 ...

  7. 给大家讲一个关于map和bean的故事(在SpringJdbc玩map被玩死)

    下面要给大家讲一个关于map和bean的故事... (在spring jdbc玩map被玩死) bean:pojo类,我习惯叫bean,有时候也叫他entity,实体类. 不要在springjdbc里 ...

  8. 一根“火柴棒”就能避孕,而且还能消灭痛经?

    硅谷Live / 实地探访 / 热点探秘 / 深度探讨 知乎上有一个很热门的提问:"痛经到底有多痛?",获得了 2345 个回答.答案看的也很惊恐,有人说"好像吃下了一肚 ...

  9. Flex框架-甘特图开发

    2012年,刚刚毕业参加的工作的时候,在公司里面学习了Flex技术.由于本人是做Java的,Flex中的ActionScript语法和Java挺类似,所以学起来还比较顺手的.大概做了一年多和Flex相 ...

最新文章

  1. 用java实现一个简易自动提款机
  2. ffmpeg推流_明白了以下5点思路,你也能用Python实现直播推流效果(技术活)
  3. 人脸识别技术突飞猛进 为应用领域拓展奠定基础
  4. 如何判断两个单向链表是否有相交,并找出交点
  5. Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
  6. pyenv 让 python 版本完美切换
  7. 3、常用关键字,变量赋值,多个变量赋值,标准数据类型,数字,字符串,列表,元组,字典,数据类型转换
  8. 分布式数据库——TiDB的介绍和基本原理
  9. @程序员,你的编程方式已过时,云开发时代来临!
  10. Grasshopper 0.9汉化版下载 【Rhino5.0参数化插件】
  11. c语言汉字转拼音,c语言汉字转拼音函数源码
  12. web页面中如何唤起打开APP实践
  13. JS实现全屏和退出全屏
  14. 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。
  15. Java学习:流程控制
  16. 修改服务器后打印机,怎样改打印机服务器的ip地址
  17. 基于Python的OCR图像识别
  18. The second day :天猫精灵玩法之创建意图,实现对话功能
  19. 今天的日子只属于你!
  20. 浮点数美丽的表象(为什么要慎用浮点数)

热门文章

  1. 《Linux系统调用:clock_nanosleep》
  2. 【论文阅读笔记】FLAME: Taming Backdoors in Federated Learning
  3. ppt怎么导入html,PowerPoint2007从网页导入文本中的方法
  4. 仿乐享微信源码介绍与分享
  5. mac声音输出设备路径_如何在Mac上切换声音输出设备
  6. 03 spike零件
  7. HTML5应用开发普及,浏览器或将取代应用商店
  8. TomcatServlet入门学习
  9. Android4.4 wifi代理流程
  10. Visio二次开发(一)----巧用Visio宏