iOS 应用从 0 到 App Store 上线:一份可复用的发布清单

从账号、Bundle ID、签名和 App Store Connect 建档开始,完整走通构建上传、素材配置、隐私声明、TestFlight 与审核发布。

App Store Connect 中的应用列表

这篇文章记录的是一条可重复执行的发布路径。Apple 的审核规则和后台界面会持续调整,实际提交前应再核对当时的官方要求。本文更新时间:2026-08-09。

先明确:上线不是最后点一次按钮

一次完整的 iOS 上线至少包含四条链路:开发者账号与权限、应用标识与签名、构建与上传、商店资料与审核。很多问题并不是出在代码,而是四条链路中的信息没有对齐。

我通常先建立一张发布检查表,把负责人、账号、Bundle ID、版本号、构建号、隐私信息、审核状态和发布时间放在同一处。这样遇到审核退回时,可以快速定位是包、资料还是账号问题。

上线前准备

账号与权限

  • 可用的 Apple Developer Program 团队账号。
  • App Store Connect 中至少具备创建应用、上传构建和提交审核所需的角色。
  • 团队名称、公司主体和联系信息已经确认。
  • 双重认证设备可用,避免发布窗口临时找不到验证码。

不要共享个人 Apple ID。多人协作时通过 Users and Access 分配角色,并在人员变化后及时回收权限。

应用身份

准备一个长期稳定的 Bundle ID,例如:

com.company.product

Bundle ID 一旦与线上应用绑定,后续迁移成本很高。命名时不要把测试环境、年份或临时项目代号写进去。测试版可以通过构建配置使用独立后缀,但正式应用身份应保持稳定。

发布素材

  • 应用名称、副标题、关键词和描述。
  • 隐私政策 URL、技术支持 URL。
  • 应用图标与各设备尺寸截图。
  • 审核联系人、演示账号和必要的操作说明。
  • 数据采集、第三方 SDK 与权限用途清单。

第一步:创建 Identifier 与能力

在 Certificates, Identifiers & Profiles 中创建 App ID,并确保 Bundle ID 与工程完全一致。然后只开启实际使用的能力,例如 Push Notifications、Associated Domains、Sign in with Apple 或 App Groups。

能力配置必须同时在三个地方对齐:开发者后台、Xcode Target 的 Signing & Capabilities、最终的 entitlements 文件。只在其中一处开启,通常会在归档或安装阶段报错。

第二步:确定签名策略

小团队可以优先使用 Xcode 自动签名,降低证书和描述文件维护成本。CI、多团队或有严格权限隔离的项目,更适合手动管理 Distribution 证书和 App Store Provisioning Profile。

发布前确认:

  1. Release 配置选择正确的 Team。
  2. Bundle ID 与 App Store Connect 建档一致。
  3. Distribution 证书未过期。
  4. Provisioning Profile 包含当前证书与能力。
  5. Keychain 中的证书包含可用私钥。

常见的 No signing certificateProvisioning profile doesn't include 和 capability 不匹配,基本都可以沿这五项排查。

第三步:在 App Store Connect 建档

创建新 App 时需要填写平台、名称、主要语言、Bundle ID、SKU 和访问范围。SKU 只用于内部识别,建议使用稳定且可读的规则,例如:

PRODUCT-IOS-PROD

App Store Connect 应用列表

建档后先完成 App Information、Pricing and Availability、App Privacy 等不会依赖构建包的部分。这样上传构建后,剩余工作更集中。

第四步:准备 Release 构建

正式归档前统一版本号与构建号:

  • CFBundleShortVersionString:面向用户的版本,例如 2.0.42
  • CFBundleVersion:每次上传必须递增的构建号。

React Native 项目还要确认 JS Bundle、Source Map 和原生符号文件对应同一次构建。不要在归档后重新打 JS 包,否则线上堆栈可能无法正确还原。

建议先在真机 Release 模式完成一次最小回归:启动、登录、核心列表、图片上传、推送、深链、支付或企业业务中的关键流程。

第五步:Archive 与上传

在 Xcode 中选择 Generic iOS Device 或真实设备,然后执行 Product → Archive。归档完成后在 Organizer 中先运行 Validate App,再执行 Distribute App。

上传前重点查看验证结果:

  • 是否包含不允许的私有 API。
  • 图标和启动资源是否缺失。
  • 签名与 entitlements 是否一致。
  • 最低系统版本与架构是否符合预期。
  • 隐私清单和第三方 SDK 声明是否完整。

上传成功不代表立即可选。App Store Connect 处理构建通常需要一段时间,处理完成后才能绑定到版本。

第六步:TestFlight 验证

不要跳过 TestFlight。至少安排一轮内部测试,验证安装、升级、登录、推送、网络权限和生产环境接口。

测试时记录三类信息:设备与系统版本、应用版本与构建号、具体操作路径。只有“打不开”而没有这些上下文,排查效率会很低。

第七步:填写版本资料与隐私信息

选择本次构建后,补齐版本描述、关键词、截图、支持网址、营销网址和审核信息。如果应用需要登录,应提供长期有效的审核账号,并关闭验证码、地域限制等会阻断审核的条件。

隐私信息要与真实行为一致:

  • 收集哪些数据。
  • 数据是否与用户身份关联。
  • 数据是否用于跟踪。
  • 权限弹窗之前是否有清晰的用途说明。

只复制别的应用答案风险很高。最稳妥的做法是从代码、第三方 SDK 和服务端接口反向核对。

第八步:提交审核与发布策略

提交前做一次最终检查:构建号、版本资料、隐私问卷、出口合规、内容分级、审核账号和发布方式。

发布方式通常有三种:审核通过后自动发布、手动发布、分阶段发布。企业业务或需要配合后端变更时,我更倾向手动发布,先确认服务端、配置和监控准备完成,再开放新版本。

常见审核问题

审核账号不可用

审核期间不要重置密码或关闭账号。涉及组织、角色或特定数据时,提前准备可复现的演示环境和说明。

权限用途描述过于笼统

需要您的相机权限 信息不足。应该说明用户在哪个动作中、为了什么业务目的使用相机,例如扫码收货或上传凭证。

后台功能与描述不一致

截图、描述和实际功能要对应。未开放的功能不要提前写进商店资料,灰度能力也要确保审核账号可见。

构建上传后无法选择

依次检查构建是否仍在处理、协议是否待签署、加密出口问题是否未回答、版本号是否与当前页面一致。

上线后的验证清单

  1. App Store 页面、图标、截图和版本号正确。
  2. 新用户可以正常下载、安装和首次启动。
  3. 老用户升级后本地数据与登录态正常。
  4. 生产接口、推送、深链和文件能力正常。
  5. Sentry 或其他监控平台已识别新版本。
  6. Source Map、dSYM 与构建号可以对应。
  7. 客服、运营和后端知道本次变更与回滚方案。

最后沉淀一份发布记录

每次发布结束后记录版本、构建号、提交时间、通过时间、审核问题、线上异常和处理动作。发布记录不是形式工作,它会在下次审核被拒或紧急回滚时直接节省时间。