我注意到一个现象:很多人把「上传成功」当成「上架完成」。IPA 传上去,控制台没报错,就觉得只剩等审核了;过两天一看,构建版本根本没出现,或者出现了,却卡在协议、隐私政策和备案上。

这篇把 iOS 上架注意事项按四个阶段拆开:上传前、上传时、上传后、审核中。用 Appuploader 上传的话,前面几步能省点事,但后面这些检查一样省不了。

上传前:哪些问题会直接把你挡在门外?

这一阶段的共同点是:包还没发出去,问题已经埋在里面了呢。

证书和描述文件。 上架要用发布证书加 App Store 类型的描述文件。用开发证书打出来的包,传上去一般会报 ITMS-90161,提示描述文件无效、缺少代码签名证书。

Bundle ID。 先在 App Store Connect 里把 App 建好,再确认 IPA 里的 Bundle ID 和后台完全一致。不一致的时候,报错是 1190 No suitable application records were found,看着像账号问题,其实是包名对不上。

版本号和构建号。 同一个版本传第二次会失败。改完错误重新打包时,记得把版本号往上加,别原样再传一遍。

图标。 需要 1024×1024 的 PNG,不能带 alpha 通道,也不能有透明背景。苹果会自己加圆角,别在源图里先切好,那样反而容易出问题。图标不符会报 ITMS-90704 或 90717。

SDK 和废弃 API。 用太旧的 Xcode 构建,会收到 SDK Version Issue;代码里还留着 UIWebView,会被 ITMS-90809 挡下来,换成 WKWebView 再来。

隐私政策和备案。 所有 App 都必须填隐私政策网址。面向中国区上架的,还要做 APP 备案,包名、SHA1、公钥这些信息提前准备好,别等到提审才发现缺。

这些检查项在工具里点几下就能确认,真正费时间的是发现问题之后重新打包。所以别等传完才看,打完包就过一遍。

上传时:报错信息该从哪里读起?

上传阶段的报错,多数是苹果的投递服务回给你的,不是上传工具本身在报错。

几个常见的:ITMS-90161 是描述文件不对,换成发布证书和 App Store 描述文件;ITMS-90426 是 SwiftSupport 文件夹缺失,用当前公开版的 Xcode 重新构建;ITMS-90101 是设备支持范围比上个版本窄了,更新版本必须继续支持以前支持的所有设备;ITMS-90076 一般出现在 App 转让账号之后,是钥匙串访问的警告,得看清楚它到底是警告还是阻断。

拿到错误码先别慌,Apple 的邮件里写了原因和处理方向。把代码抄去搜,比自己猜快得多啊。Appuploader 负责把 IPA 送上去,苹果的校验在对面,这两件事分开看。每次的报错邮件留一份,下次遇到同类问题,翻记录比重新搜快。

一个容易误判的点:Appuploader 显示上传成功,只代表文件传完了,不代表苹果已经收下并处理完成。最终结果以 App Store Connect 的构建版本状态和 Apple 的邮件为准。

上传后:构建版本为什么一直不出现?

先等一下,别急着判定失败啊。构建版本的处理时间一般在 10 到 30 分钟,偶尔会拖到几个小时。这段时间确实不用急,后台显示「正在处理」,属于正常状态。

如果一直不出现,先去 Apple ID 对应的邮箱翻一遍,垃圾箱也别放过。不管成功还是失败,苹果都会发邮件,失败邮件里带着原因。常见的有四种:用了开发证书打包、图标带 alpha、版本号重复、少了权限说明。

还有一种情况是 App 压根没在后台建好,或者 Bundle ID 填错了,这种在上传阶段就会以 1190 的形式挡回来。红框提示不等于构建版本可用,这两步得分开确认。这期间也别反复重传,重传不会让处理变快,反而可能让后台多出几个重复构建,清起来更麻烦。

审核中:被拒的大头一般在哪?

审核阶段的上架注意事项,主要集中在「说的和做的是不是一回事」。

隐私政策网址要能打开,内容要覆盖实际收集的数据;权限说明要写清楚为什么用这个权限,别用一句「为了更好的体验」糊弄。需要登录才能用的 App,记得在审核信息里提供测试账号,不然审核员进不去,大概率直接拒啊。

截图、名称、描述要和 App 实际功能对得上。功能太少、和已有应用高度雷同的,还会碰到 4.2 和 4.3。中国区上架的,备案信息也要补齐。

被拒不可怕,怕的是不知道改哪。把审核备注逐条对应到功能、文案和权限说明上,改完再写一段说明给审核员看,沟通成本会低很多。

被拒之后别原样重提。改完问题、加个版本号再传,审核备注里把改动说清楚,比反复提交同一个包有效。

一张表过一遍

把前面四个阶段压缩成一张表,提交前扫一眼:

阶段 检查什么 不对会怎样
上传前 发布证书 + App Store 描述文件 ITMS-90161、构建失败
上传前 Bundle ID 与后台一致 1190,找不到应用记录
上传前 版本号 / 构建号没重复 上传失败
上传前 1024 图标、无 alpha ITMS-90704 / 90717
上传前 当前 Xcode、无 UIWebView SDK Issue / ITMS-90809
上传前 隐私政策、中国区备案 审核被拒
上传时 读懂 ITMS 错误码 反复重传,浪费时间
上传后 Processing 状态、查邮件 误以为已经成功
审核中 测试账号、权限说明、元数据一致 审核被拒

上传只是一个动作,上架是一条链。链条上任何一环没对上,前面传得再顺也没用。

上传成功只说明包送到了,离上架还差好几道门。

按这个顺序过一遍:先查证书和 Bundle ID,再看版本号和图标,传完等 Processing、盯邮箱,进审核前把隐私政策、测试账号和备案补齐。真的被拒了也别急,邮件里的理由一般写得很具体,照着改就是了。