记一次IOS应用上架多次被拒的处理过程
入软件开发这行这么多年以来,还是头一次觉的有必要记录一下这次IOS应用上架的过程,因为过程实在是太折磨,给自己留个爪,也给遇到过同样问题的同学做个参考,如果这篇不入流的博文,能让几个人少踩几个小坑,那就不枉费我花在写博文的这几个小时上。
闲言少叙,咱开始正片。
首先这个项目是公司客户的一个配套APP,没有太多的功能,就是扫码(这里就有一个坑,容我稍后再叙)记录跟一些普通的增删改查。因为是给客户公司内部使用,所以只有登录,不提供注册功能(这里又是一个坑)。前端用的是uniapp那套东西,后端用的是.NET CORE写的webapi,架构和代码都没啥可说的,懂的都懂。
开发过程么,也没啥好说的,有了AI工具的加持,前端我几乎没自己动手写过,最多就是给了一个指导性的框架,AI就给搓了出来。后端是自己先手搭建,然后AI填充。不过这个过程中有时候AI总是会自作聪明的多加一些无关的东西,后来在规则不断的完善过程中,基本也就没出过啥圈子。
至此,整个开发过程还是比较顺利,也都在H5网页跟安卓上跑过了测试,都没有问题,好,现在重头戏来了,app store的上架。
公司有一个企业开发者账号,但还有一个月就要过期,过期后不准备续费。我预估是一周左右就能完成,一个月对我来说那必须手拿把掐。但我还是低估了苹果的人工审核,不出意外的,意外翻车了,还翻了好几次。
创建应用名称、申请P12证书这些我就不再详述,网上的例子跟现在苹果的流程大差不差。证书这些创建好之后,就可以使用HBuilder进行云打包了,打包成功之后,一开始手头没有Mac,想着找一个windows下的传输工具去上传到AppStoreConnect中,但是转了一圈,发现现在的工具写的都是免费,但你要上传ipa就要收费。思来想去,觉的把证书、秘钥什么的放这种第三方工具属实不太安全,毕竟这是公司的账户,最后不得以,搞了台Mac,通过Transporter上传到了AppStoreConnect。
填完app的一些相关信息后,需要把自己的app截图放3张上去。因为功能简单,使用的都是uniapp的组件,所以跑通了H5和安卓后,我就没进行ios上的测试(主要还是穷,买不起iphone),所以这里的截图我就放了3张H5的截图,还特意用那种截图美化的工具美化了一圈,顺利提交。
就在我信心满满等待审核通过的时候,苹果的一封审核邮件给我泼了一盆冷水,我登录AppStoreConnect后,打开那个醒目的红色拒绝图标后,里边原因让我有些懵。

上边一堆的英文大家不用去管,最根本的原因在审批拒绝原因的最后,就是上图所示的三个问题。此时3.2.0的这个原因我还没意识到,这个问题将贯穿整个审批的过程。苹果的两个截图里边,一个是我的登录连接失败,一个是我用H5里的截图。
我当时以为是我的webapi服务器有问题,马上去看了一眼,发现登录正常,而且我里边用的是域名,也没有使用ip,我当时怀疑是刚好在审核的时候,我的webapi服务器卡了。而H2.3.10 这个问题,其实就是我用的是H5的截图,没有完整的截取应用在手机上的截图,于是重新打开安卓手机应用,截图,替换app信息中的那三个截图,搞定,第二次提交。

第二天苹果的审核就给了回复,不像网上说的需要好几个工作日,不过结果依旧是拒绝,这次回复了5个截图(o(╥﹏╥)o)。其中3个我上传的应用截图,2个登录时网络连接失败的截图。

这次我才搞明白,苹果要求截图必须是ios环境下真机的截图,没办法,我只好p了一个苹果手机的头,再结合我H5的截图,替换了我原来app信息里的截图,至于网络连接错误嘛,我依旧认为是我的webapi服务器偶发的卡顿问题,之后继续提交。
这一次足足等了7天,苹果才又一次发来拒绝通过的消息,不过好在这一次的截图换了,问题也换了。


其中一个截图是打开摄像头,弹出的提示问题。一通百度和AI下来,这才确定是我使用了摄像头,但没有在NSCameraUsageDescription里配置,配置好这个,重新打包,重新上传,继续提交。依旧没有管3.2.0那条记录。能看到我调用了摄像头,那说明苹果那边能登录到我的app里,那也侧面说明我的webapi服务器没有问题。
仅仅过了一天,苹果就发来了消息,依旧拒绝,但图片换成了2个网络连接失败,一个登录中的图片,问题列表也变成了2.1.0和3.2.0,咋回事,不是能登陆么,怎么又不行了?于是我开始对我的webapi服务器陷入了怀疑,加上使用AI的问询,引导我开始向ipv6的方向而去。但ipv6的改造需要找服务商申请固定ip,还要走很多流程,包括域名解析添加ipv6的解析记录之类的,不是短时间能解决的问题。于是乎,抱着谄媚的态度,给苹果的审核回复了下我的应用是做啥,用于哪个行业的,巴拉巴拉一堆,然后再提交。
不出意外,还是拒绝,问题列表还是2.1.0和3.2.0,但截图换了,告诉我登录的图片和app信息里图标货不对板,马上整改,换成一致的图片。还有一个登录连接失败的问题,这个依然没法短时间解决,不过我已经开始准备联系相关同事,打算开始服务器的ipv6改造。至于3.2.0,我开始理解,应该是我的app不提供注册功能,让苹果那边认为我的app只是企业内部应用工具,不适合上架到公开的app store里,再加上AI的怂恿,我准备开始改造我的应用,打算加一个注册的功能,先过了审核再说。
这个时候还有一天,公司的开发者资格就要到期了,我抱着死马当作活马医的态度,参考了一个博主的博文,诚恳的写一份回复,表明我的app主要发布于中国范围内,并不只限于我们公司的内部员工使用,进行企业分发不适合我们,然后我就提交了再次审核。之前的回复我都是英文回复,这次我干脆全写的中文。
本来没报多大的希望,神奇的是,第二天我再看的时候,审核竟然通过了。
经过这一路的坎坷,我总结出一下经验供参考:
1、如果遇到苹果的审核无法访问你的webapi,不要担心,那是因为苹果在2016年6月之后,开始执行IPv6-only网络兼容性要求,但不强制你的服务器也要支持ipv6,只要你的webapi绑定的是域名即可。苹果苹果审核环境为IPv6-only 的 DNS64/NAT64 网络,他会将ipv4的域名自动转化为一个临时的ipv6地址,但偶尔会有失败的时候,所以有时候就得看命,当然你的服务器要是支持ipv6,同时域名解析里也绑定了ipv6的地址,那是最好的。
2、app信息里的截图一定要用ios环境下的,否则他也会驳回。还有就是你如果使用了摄像头、位置、麦克等涉及隐私的功能,一定要在你的app设置里加入声明,重新打包,否则也会被拒。
3、针对3.2.0,你可以据理力争(当然态度要诚恳),表明你的app需要上架到公共商店的理由,苹果的审核应该也会同意,但一定要在app信息的备注里和回复里说清楚,千万不要说只给自己公司内部使用,否则苹果审核会认为你的app需要走企业分发,不给你上架。
4、还有一点,如果你的开发者资格如果已经过期,但你已经将app上传到了AppStoreConnect,我理解的是你应该可以一直提交,直到你删除了该应用,不再提交为止。但如果你要是再打包,上传新的版本,应该就不行了。
5、再啰嗦一点,我在审核过程中,针对苹果的回复,也咨询了deepseek、豆包、智普的大模型,基本都是让你改造服务器支持ipv6,有的还言之凿凿告诉你,你不改造,绝对审核不过去之类的,所以有时候大模型真的不要全信,还是要有自己的判断力。不过有一说一,让他干点写代码的活儿,那还真是好用,可以把你节省下来的时间投入到架构的设计上,还能跟着它学到不少东西。
6、审核通过之后,还需要你设置价格和上架地区,设置完之后的1-4个小时,你就能从商店搜到你的应用。
好了,说了这么多,祝大家都能顺利上架,再啰嗦一句,一定要真诚,千万不要带着虚假的信息提交,否则苹果审核那里真过不去。

浙公网安备 33010602011771号