☰
【SwiftUI娓娓道来】第7课:让你的App走向世界——发布与上架完整指南
2026/9/28 4:39:40 网站建设 项目流程

开篇:代码写完了,然后呢?

前六课,我们已经走过了 SwiftUI 的完整学习路径。第1课认识了积木,第2课学会了布局,第3课让界面活了起来,第4课让数据留了下来,第5课让数据流动了起来,第6课让代码立了起来。现在,你有一个架构清晰、功能完整、能连网、能存数据的 App 了。

但是,它还躺在你的 Mac 上,躺在 Xcode 的模拟器里。只有你一个人能看到它,只有你一个人能用它。

你可能会想:“我写这个 App,是想给别人用的。”你想让朋友下载,想让用户使用,想让世界看到你的作品。

这就像你做好了菜,但还没有端上桌。菜在厨房里,只有厨师能看到;端上桌,客人才吃得到。发布,就是把你的 App 从厨房端到餐桌上的过程。

这个过程听起来简单:打包、上传、等审核。但真正做过的人都知道,这里面的坑很多。证书过期、描述文件不匹配、隐私清单缺失、SDK 版本不满足、截图不符合规范、年龄分级问卷没填、审核被拒……每一个坑都可能让你卡上几天甚至几周。

尤其是 2026 年,苹果对上传要求做了几项重要的收紧。SDK 版本、隐私清单、年龄分级问卷,每一项都有明确的截止日期。如果你不了解这些变化,很可能会在上传时被直接拒绝。

这一课,我们就来完整地走一遍从代码到上架的流程。每一步都会告诉你:要做什么,为什么要做,容易在哪里出错。

我们会讲:

  • 开发者账号与费用;
  • 2026年 SDK 最低版本要求;
  • 证书与描述文件;
  • App Store Connect 配置;
  • 隐私清单与隐私营养标签;
  • 年龄分级新规;
  • 截图与元数据准备;
  • 打包与归档;
  • TestFlight 内测;
  • 提交审核;
  • 审核被拒怎么办;
  • 分阶段发布与版本管理。

这一课会很长,但不会难。因为发布流程本质上就是按步骤操作。理解每一步的目的,剩下的就是细心和耐心。

好,我们开始。

一、发布前的准备:你需要的账号和工具

1.1 Apple Developer Program

要在 App Store 上发布 App,你必须加入 Apple Developer Program。这不是可选项,是必须的。

账号类型:

  • 个人账号:99 美元/年,适合个人开发者,上架后显示个人名称;
  • 公司账号:99 美元/年,适合企业团队,上架后显示公司名称,需要提供 D-U-N-S 编号;
  • 企业账号:299 美元/年,仅限内部使用,不能公开上架 App Store。

对于大多数个人开发者和小团队,个人账号就够了。注册地址是 developer.apple.com/programs/。

需要注意的是,公司账号需要 D-U-N-S 编号验证,这个过程可能需要几天甚至几周。所以如果你打算用公司账号发布,尽早开始注册流程,不要等到要发布了才去注册。

免费 Apple ID 可以做什么?可以签名构建到自己的设备上,但描述文件只有 7 天有效期,而且不支持 TestFlight 和 App Store 分发。也就是说,免费账号只能自己玩,不能发布。

1.2 Xcode 与 SDK 版本要求:2026年的硬性门槛

Xcode 是开发、打包、上传的必备工具。你需要最新版本的 Xcode。

特别重要:自 2026 年 4 月起,上传到 App Store Connect 的 App 必须满足以下最低 SDK 要求:

  • iOS 和 iPadOS App必须使用 iOS 26 SDK 或更高版本构建;
  • Apple tvOS App必须使用 Apple tvOS 26 SDK 或更高版本构建;
  • visionOS App必须使用 visionOS 26 SDK 或更高版本构建;
  • watchOS App必须使用 watchOS 26 SDK 或更高版本构建。

这意味着,你必须使用 Xcode 26 或更高版本来构建上传到 App Store 的 App。如果你用的是旧版本 Xcode,你的 App 会被直接拒绝。

好消息是,SDK 版本要求不等于部署目标要求。你仍然可以将 App 的最低支持版本(Deployment Target)设得比 iOS 26 低,只要用 Xcode 26 构建即可。苹果允许开发者将 IPHONEOS_DEPLOYMENT_TARGET 设到 iOS 15.0 甚至更低,前提是用 Xcode 26 构建。

所以,保持 Xcode 更新,不要偷懒。这是发布的第一道门槛。

1.3 发布检查清单

在开始打包之前,先用这个清单检查一下你的项目:

  • 版本号和构建号已更新:版本号(如 1.0.0)是给用户看的,构建号(如 1)是给系统用的,每次上传都要递增;
  • App 图标完整:需要浅色、深色、着色三种模式;
  • 隐私清单已包含:PrivacyInfo.xcprivacy文件;
  • 年龄分级问卷已填写:2026 年 9 月起为强制要求;
  • Release 配置已设置:不要用 Debug 配置打包;
  • Archive 验证通过:在 Xcode 里先验证一遍;
  • TestFlight 测试完成:至少跑一遍完整的用户流程;
  • 截图已更新:和当前版本的功能一致;
  • App Store 元数据完整:名称、描述、关键词、分类等。

这个清单看起来简单,但每一步都有人踩过坑。尤其是隐私清单、年龄分级问卷和截图,是审核被拒的高频原因。

二、证书与描述文件:代码签名的那些事

2.1 什么是代码签名?

iOS 是一个封闭的系统。苹果要求所有在 iOS 上运行的 App 都必须经过签名。签名的目的是:

  • 验证开发者身份:这个 App 是谁做的;
  • 保证代码完整性:App 没有被篡改;
  • 控制权限:这个 App 能用哪些系统能力。

代码签名需要两个东西:

  • 签名证书:证明你是合法的苹果开发者;
  • 描述文件:说明你的 App 需要哪些服务和权限,以及哪些设备可以安装。

你可以把签名证书理解成你的“身份证”,描述文件理解成你的“通行证”。身份证证明你是谁,通行证说明你能去哪里。

2.2 自动签名 vs 手动签名

Xcode 提供了两种签名方式:

自动签名(推荐):Xcode 帮你管理证书和描述文件。你只需要在 Target 的 Signing & Capabilities 里选择你的开发团队,勾选“Automatically manage signing”,Xcode 会自动创建、更新、续期证书和描述文件。

自动签名适合大多数场景。它省心、省事,不容易出错。对于个人开发者和中小团队,强烈推荐用自动签名。

手动签名:你自己在 Apple Developer 网站上创建证书和描述文件,然后下载到本地,在 Xcode 里配置。

手动签名适合以下场景:

  • 团队有多个开发者,需要集中管理证书;
  • 使用 CI/CD 自动化构建,需要精确控制签名;
  • 自动签名出问题,需要手动排查。

2.3 证书过期的坑

这是新手最常踩的坑之一:证书过期了。

苹果的签名证书有效期通常是一年。证书过期后,你的 App 无法再签名,需要重新生成。

如果你用自动签名,Xcode 会在证书快过期时提醒你,通常不需要手动处理。但如果你用手动签名,就要自己盯好时间。

一个实用技巧:当证书剩余有效期不足一半(通常为 180 天)时,就可以发起手动证书轮换。提前换,不要等到过期。

2.4 描述文件不匹配

另一个常见的坑是:描述文件不匹配。

描述文件里记录了你的 App ID、证书、设备列表和能力(比如推送通知、App Groups)。如果你在 App 里加了新的能力,但描述文件没有更新,上传时就会报错。

自动签名会自动更新描述文件,手动签名就要自己记得更新。

描述文件不匹配是首次上传最常见的被拒原因之一。所以,如果你用了手动签名,每次加了新能力之后,都去检查一下描述文件。

三、App Store Connect:你的 App 的管理中心

3.1 创建 App 记录

登录 App Store Connect(appstoreconnect.apple.com),进入“我的 App”,点击“+”创建新 App。

你需要填写:

  • 平台:iOS、macOS、tvOS、visionOS、watchOS;
  • 名称:App 的名称,最多 30 个字符;
  • 主要语言:App 的主要语言;
  • Bundle ID:必须和 Xcode 项目里的 Bundle ID 一致;
  • SKU:一个内部标识符,不会对用户显示,可以随便填,但建议用有意义的字符串;
  • 用户访问权限:谁可以管理这个 App。

Bundle ID 是最容易出错的地方。如果 Xcode 里的 Bundle ID 和 App Store Connect 里不一致,上传时会报错。

3.2 填写 App 信息

创建 App 后,你需要填写大量信息:

  • App 名称:显示在 App Store 上的名称;
  • 副标题:简短描述,最多 30 个字符;
  • 描述:详细介绍,最多 4000 个字符;
  • 关键词:用于搜索,最多 100 个字符,用逗号分隔;
  • 支持 URL:你的支持页面;
  • 营销 URL:你的营销页面(可选);
  • 隐私政策 URL:必须有;
  • 分类:选择最适合你的 App 的分类;
  • 年龄分级:根据内容选择。

3.3 年龄分级问卷的新要求

年龄分级系统已经更新,提供了更精细的分级和类别。每个 App 的当前分级会自动更新以符合新系统。

2026 年 7 月起,App Store Connect 的年龄分级问卷新增了社交媒体功能相关问题。社交媒体功能被定义为“通过社交信息流或类似发现方式,重新分发、放大或与用户生成内容互动的能力”。

如果你的 App 或游戏包含社交媒体功能,将会在 App Store 产品页面上显示新的“社交媒体”内容描述符。如果你表示 App 包含社交媒体功能但对 13 岁以下用户禁用了这些功能,则不会将其纳入 13 岁以下用户的“社交媒体”时间配额类别。

自 2026 年 9 月起,在提交新 App、App 更新或提交公证时,回答这些问题将成为强制性要求。无论你在 App Store Connect 中选择何种应用类别,只要包含社交媒体功能,最低年龄分级将被定为 13+。

这是一个重要的变化。如果你的 App 有任何形式的社交功能(评论、分享、用户动态等),务必在提交前确认年龄分级问卷已正确填写。

3.4 上传截图和预览

截图是审核被拒的高频原因之一。规则很明确:

  • 截图必须展示 App 的实际使用界面;
  • 不能只是标题图、登录页或启动页;
  • 可以包含文字和图片叠加,但不能用 AI 生成的图替代真实截图;
  • 每个语言需要对应的截图,不能用英文截图占位;
  • 可以上传 1 到 10 张.jpeg、.jpg或.png格式的截图。

尺寸要求(2026年):

6.9 英寸显示器的截图是主要接受的尺寸,具体像素为 1260 x 2736 像素(竖屏)或 2736 x 1260 像素(横屏)。只有当没有提供 6.9 英寸截图时,才需要提供 6.5 英寸的截图作为备用。

如果你支持 iPad,还需要提供 iPad 尺寸的截图。13 英寸 iPad 的截图尺寸为 2064 x 2752 像素。

一个实用技巧:截图不要只截一个界面,要展示 App 的核心功能。比如,一个新闻 App 可以截首页列表、文章详情、搜索界面。每张截图配上一句简短的文字说明,效果会更好。

3.5 隐私营养标签

这是 iOS 14 以来最重要的合规要求之一。你必须在 App Store Connect 中填写 App 的隐私做法,这些信息会以“隐私营养标签”的形式显示在产品页面上。

你需要说明:

  • App 收集哪些类型的数据;
  • 这些数据是否与用户身份关联;
  • 这些数据是否用于追踪用户;
  • 如果集成了第三方 SDK,也要说明它们的数据收集行为。

“收集”的定义很关键:指从设备发送数据,并且开发者或第三方可以在超出实时处理请求所需的时间后访问该数据。也就是说,即使是临时发到服务器处理的数据,如果服务器保留了,就算“收集”。

如果填错了隐私营养标签,审核会被拒。而且,如果第三方 SDK 有隐私问题,你的 App 也会被拒。所以,填之前要仔细核对每一个第三方 SDK 的隐私政策。

四、隐私清单:2026年的硬性要求

4.1 什么是隐私清单?

隐私清单是一个名为PrivacyInfo.xcprivacy的文件,它详细说明了你的 App 如何使用用户数据。

这不是可选的。自 2024 年 5 月 1 日起,所有提交到 App Store 的新 App 和更新都必须包含隐私清单文件。没有适当隐私清单的 App 将在审核期间被拒绝。自 2024 年 11 月 12 日起,提交审核的 App 必须包含有效的隐私清单文件,否则会收到包含无效文件名称和路径的拒绝邮件。

4.2 隐私清单要写什么?

隐私清单是一个属性列表文件,包含四个核心键:

  • NSPrivacyTracking:布尔值,表示 App 是否进行追踪;
  • NSPrivacyTrackingDomains:字符串数组,列出用于追踪的域名;
  • NSPrivacyCollectedDataTypes:声明收集的数据类型;
  • NSPrivacyAccessedAPITypes:声明使用的必要理由 API 及原因。

苹果要求某些 API 必须说明使用原因,包括以下五类:

  • 文件时间戳 API:访问文件的时间戳;
  • 系统启动时间 API:获取系统启动时间;
  • 磁盘空间 API:查询磁盘空间;
  • 活动键盘 API:访问活动键盘信息;
  • 用户默认值 API:访问 UserDefaults。

外部域名也必须列出,以确保潜在追踪的透明度。追踪域名的值必须包含顶级域名或子域名,不包含路径和查询组件,不包含尾部斜杠。

在 Xcode 中,你可以通过“App Privacy”模板来创建隐私清单文件。记得保持第三方 SDK 更新,确保它们自带有效的签名清单,并且清单内容与你在 App Store Connect 中填写的隐私标签一致。

4.3 隐私影响 SDK 是什么?

如果你的 App 集成了“隐私影响第三方 SDK”列表中的 SDK,那个 SDK 必须自带隐私清单。

常见的隐私影响 SDK 包括:

  • 广告 SDK(如 Google AdMob);
  • 分析 SDK(如 Firebase Analytics);
  • 登录 SDK(如 Facebook Login);
  • 支付 SDK。

如果你的 App 集成了这些 SDK,你需要:

  • 确认 SDK 版本包含隐私清单;
  • 确认 SDK 的隐私清单正确描述了它的数据收集行为;
  • 如果你的 App 自己也有隐私清单,不要混在一起。

大多数隐私清单相关的拒绝来自第三方 SDK,而不是你自己的代码。所以,检查每一个第三方 SDK 的隐私清单,是发布前必不可少的一步。

4.4 一个常见错误

如果你收到了ITMS-91056: Invalid privacy manifest的错误邮件,说明你的隐私清单文件格式有问题。

无效的隐私清单包括:包含无效键或值的属性列表文件;格式不正确的属性列表文件。例如,NSPrivacyTracking的值必须是布尔类型,如果写成其他类型就会报错;NSPrivacyTrackingDomains的值必须是字符串数组。

解决办法是:对照 Apple 文档,逐一检查每个键的类型和值是否符合要求。

五、打包与归档

5.1 Archive:打包的第一步

在 Xcode 中,选择“Any iOS Device (arm64)”作为目标设备,然后选择 Product > Archive。

Archive 会把你的 App 编译成 Release 版本,并打包成一个.xcarchive文件。这个文件包含了你的 App 的所有内容:二进制、资源、符号表、dSYM 文件等。

Archive 完成后,Xcode 会自动打开 Organizer 窗口,显示你刚刚创建的 Archive。

5.2 验证 Archive

在 Organizer 中,点击“Validate App”,Xcode 会检查你的 App 是否符合 App Store 的要求。

验证会检查:

  • Bundle ID 是否正确;
  • 版本号和构建号是否有效;
  • 签名证书是否有效;
  • 描述文件是否匹配;
  • 是否包含隐私清单;
  • 是否使用了正确的 SDK 版本;
  • 是否有其他明显问题。

验证通过不代表审核一定通过,但验证不通过一定不能上传。所以,每次上传前都先验证一遍。

5.3 上传到 App Store Connect

验证通过后,点击“Distribute App”,选择“App Store Connect”,然后选择“Upload”。

Xcode 会把你的 App 上传到 App Store Connect。上传过程可能需要几分钟到几十分钟,取决于你的 App 大小和网络速度。

上传完成后,你可以在 App Store Connect 的 TestFlight 标签页看到你的构建。构建会先进入“处理中”状态,处理完成后才能使用。

5.4 常见的上传错误

  • ITMS-91056: Invalid privacy manifest:隐私清单格式无效,参考上一节;
  • ITMS-91061: Missing privacy manifest:缺少隐私清单;
  • Invalid Bundle ID:Bundle ID 不匹配;
  • Missing provisioning profile:描述文件缺失或不匹配;
  • Invalid Code Signing:签名证书无效或过期;
  • Unsupported SDK:使用了不支持的 SDK 版本,检查是否使用了 iOS 26 SDK 或更高版本。

遇到错误不要慌。仔细读错误信息,通常它会告诉你具体哪里出了问题。

六、TestFlight:在发布前先测试

6.1 什么是 TestFlight?

TestFlight 是苹果的 Beta 版测试服务。你可以在 App Store 上架之前,把 App 分发给测试员,收集反馈,修复 bug。

TestFlight 有两种测试模式:

  • 内部测试:最多 100 人,必须是 App Store Connect 用户,无需审核,构建处理完成后立即可用;
  • 外部测试:最多 10,000 人,需要通过 Beta App Review,每个版本的第一个构建需要审核,后续构建通常很快通过。

6.2 添加内部测试员

内部测试是最快的测试方式:

  1. 在 App Store Connect 中进入你的 App;
  2. 点击“TestFlight”标签;
  3. 在“内部测试”下创建或选择一个测试组;
  4. 点击“邀请测试员”,选择你团队中的用户;
  5. 测试员会收到邮件邀请,安装 TestFlight App 后即可开始测试。

内部测试员不需要 App Store Connect 账号以外的额外操作。你可以设置自动分发,这样每次上传新构建,测试员都会自动收到。

6.3 添加外部测试员

外部测试需要经过 Beta App Review:

  1. 在“外部测试”下创建一个测试组;
  2. 添加构建到测试组;
  3. 点击“提交审核”(第一个构建需要,后续构建通常不需要);
  4. 审核通过后,通过邮件邀请测试员,或者创建公开链接。

外部测试员不需要 App Store Connect 账号,只需要安装 TestFlight App 即可。

每个版本最多可以在 24 小时内提交 6 个构建进行 Beta App Review。第一个构建通过审核后,同一版本的后续构建通常几分钟就能处理完成。

6.4 TestFlight 的重要注意事项

  • 构建会在 90 天后过期。过期后,测试员会完全失去 App,包括登录状态、本地数据和测试进度。所以,如果要长期测试,记得定期上传新构建;
  • 邀请邮件经常收不到。这是苹果多年的已知问题,没有永久修复。如果测试员收不到邀请,可以用公开链接绕过这个问题;
  • 构建过期后需要上传新构建才能继续测试。

6.5 用 TestFlight 测试什么?

TestFlight 是发布前最后一道防线。在这个阶段,你应该测试:

  • 核心功能流程:用户能不能完成主要操作;
  • 不同设备:iPhone SE、iPhone 15 Pro Max、iPad 都试试;
  • 不同 iOS 版本:至少覆盖你支持的最低版本和最新版本;
  • 网络异常:断网、弱网、切换网络;
  • 边界情况:空数据、超长文本、特殊字符;
  • 性能:启动速度、滚动流畅度、内存占用。

不要跳过 TestFlight 直接提交审核。审核团队发现的问题,你的测试员本来可以帮你提前发现。

七、提交审核

7.1 提交前的最后检查

在提交审核之前,再次确认:

  • 所有元数据(名称、描述、关键词、截图)都已填写;
  • 隐私营养标签已填写;
  • 隐私清单已包含且格式有效;
  • 年龄分级问卷已填写(2026 年 9 月起为强制要求);
  • 构建已上传并通过处理;
  • TestFlight 测试通过;
  • 后端服务在审核期间全天候可用。

最后一点很重要:审核团队可能会在任何时间测试你的 App。如果你的后端服务在审核期间宕机了,审核团队无法正常使用你的 App,就会拒绝。

7.2 提交审核

在 App Store Connect 中,选择你要提交的版本,点击“提交审核”。

你需要回答几个问题:

  • 出口合规:你的 App 是否使用加密技术;
  • 内容版权:你的 App 是否包含第三方内容;
  • 广告标识符:你的 App 是否使用 IDFA。

然后,你可以选择“手动发布”或“自动发布”。手动发布意味着审核通过后,你需要手动点击发布。自动发布意味着审核通过后立即发布。

7.3 审核时间

苹果表示,审核团队能在 48 小时内处理 90% 的提交申请。但实际时间可能因 App 复杂度和审核队列长度而不同。

如果审核超过 48 小时还没结果,你可以在 App Store Connect 中提交加速审核申请,但需要有合理的理由(比如紧急 bug 修复)。

八、审核被拒怎么办?

8.1 常见的被拒原因

审核被拒是正常的。很多 App 都经历过被拒、修改、重新提交的过程。关键是理解被拒的原因,然后针对性地修改。

元数据问题:截图与实际功能不符,描述包含误导性信息,关键词堆砌。确保截图中的每个按钮、界面都与实际功能一致,避免误导。

隐私问题:隐私营养标签填写不准确,缺少隐私清单,第三方 SDK 没有隐私清单。

设计规范违反:App 的功能集与其他已上架 App 相同,只是内容或语言不同,被视为垃圾应用。苹果正在严厉打击低质应用。典型的 4.3 被拒包括:发布相似应用,仅在内容上有差异;在自己的开发者账号下发布白标应用;仿冒或蹭名牌,照搬热门 App 的 UI,或名称、图标与知名 App 高度相似。

支付问题:接入第三方支付(如微信、支付宝、Stripe、PayPal),没有使用 StoreKit。修复方法是移除所有第三方支付 SDK 和入口,接入 StoreKit,在 App Store Connect 配置 IAP 商品。缺少恢复购买功能或隐藏付费内容也是常见问题。

AI 服务问题:如果 App 将用户数据发送给第三方 AI 服务,需要修改隐私政策,说明不共享或出售数据给第三方 AI 提供商,并列出 AI 数据处理者。

技术稳定性问题:审核期间崩溃、后端服务不可用、功能不完整。提交前用 TestFlight 覆盖不同 iOS 版本和设备型号进行全面测试。

8.2 被拒后的标准动作

收到被拒通知后,不要急着重新提交。先做这几件事:

  1. 仔细读清楚“Specifically”后面的描述。苹果会明确指出是元数据误导、App 名称/图标误导,还是包含恶作剧功能;
  2. 对照审核指南找到对应的条款。每个被拒理由都会引用具体的审核指南条款;
  3. 修改问题,而不是绕过问题。苹果审核团队经验丰富,试图绕过规则只会让情况更糟;
  4. 在回复中礼貌地说明你做了哪些修改。如果你认为被拒是误判,可以礼貌地解释,并提供证据;
  5. 重新提交。很多 App 经过一轮或多轮审核后被批准。

8.3 一个真实的案例

有一个 App 被拒的原因是 4.3 Design: Spam——“我们注意到你的 App 提供了与其他已提交 App 相同的功能集,只是内容或语言不同,这被视为垃圾应用的一种形式。”审核团队建议开发者考虑将 App 发布为 Developer ID macOS 应用程序,如果是 iOS App 可以使用 Catalyst。

这个案例说明,如果你的 App 是“又一个”同类应用,没有独特价值,就可能被拒。解决办法是:找到你的差异化,突出你与众不同的功能。

九、分阶段发布与版本管理

9.1 分阶段发布

审核通过后,你可以选择分阶段发布。分阶段发布会在 7 天内逐步将新版本推送给用户:

天数用户百分比
11%
22%
35%
410%
520%
650%
7100%

在分阶段发布期间,所有用户仍然可以随时从 App Store 手动下载 App 和更新。

分阶段发布的好处是:如果新版本有严重 bug,你可以在它影响到所有用户之前暂停发布。你最多可以暂停发布 30 天,且次数不限。

要启用分阶段发布,在 App Store Connect 中进入你的 App 版本页面,在“分阶段发布自动更新”部分选择“于 7 天内分阶段发布更新”。

9.2 版本号与构建号

版本号(如 1.0.0)是给用户看的,每次发布新版本时递增。构建号(如 1、2、3)是给系统用的,每次上传到 App Store Connect 都要递增,即使版本号没变。

建议的版本号规则:

  • 主版本号:重大更新或不兼容的变更(1.0.0 → 2.0.0);
  • 次版本号:新功能(1.0.0 → 1.1.0);
  • 修订号:bug 修复(1.0.0 → 1.0.1)。

9.3 紧急修复

如果你的 App 有严重 bug 需要紧急修复:

  1. 修复 bug;
  2. 递增构建号;
  3. 打包、上传;
  4. 在提交审核时申请加速审核,说明紧急原因;
  5. 审核通过后,可以跳过 TestFlight 直接发布。

紧急修复的情况包括:App 崩溃、数据丢失、安全漏洞、支付问题。其他小 bug 不建议走紧急通道,因为加速审核的名额有限。

十、欧盟 DMA 合规:如果你的 App 面向欧洲用户

10.1 DMA 是什么?

欧盟的《数字市场法》(Digital Markets Act,DMA)要求苹果开放 App Store,允许第三方应用商店和网络分发应用,同时允许开发者向用户提供 App Store 之外的购买渠道。

2025 年 4 月,欧盟委员会认定苹果违反 DMA 的“反引导”义务,对苹果处以 5 亿欧元罚款。

10.2 2026 年 10 月 1 日起的变化

自 2026 年 10 月 1 日起,欧盟地区的 App Store 将实施新的商业条款:

  • 应用内购标准佣金从 30% 下调至 26%;
  • 如果使用替代支付处理方式,佣金进一步降低;
  • 苹果以 5% 的核心技术佣金取代了安装费。

10.3 对开发者的影响

如果你的 App 面向欧盟用户,你需要注意:

  • 如果你的 App 面向未成年人或有大量 18 岁以下欧盟用户,必须验证家长控制机制和外部链接限制。使用替代计费方式的应用必须要求 18 岁以下用户获得家长许可,并完全禁止 13 岁以下用户访问外部链接。
  • 你可以向欧盟用户提供 App Store 之外的购买渠道,但必须遵守苹果的新规则;
  • 如果你选择使用替代支付模式,必须承诺至少 12 个月采用该模式。

这些变化只影响欧盟地区。如果你的 App 不面向欧洲用户,可以暂时忽略。

十一、常见坑与调试建议

11.1 SDK 版本不满足要求

自 2026 年 4 月起,必须使用 iOS 26 SDK 或更高版本构建。检查你的 Xcode 版本是否满足要求。如果用旧版本 Xcode 构建,上传会被直接拒绝。

11.2 证书过期

自动签名会自动续期。手动签名要自己盯好时间,建议提前 180 天轮换。

11.3 描述文件不匹配

这是首次上传最常见的被拒原因。加了新能力(推送、App Groups 等)后,检查描述文件是否更新。

11.4 隐私清单缺失或格式无效

如果你的 App 集成了隐私影响的 SDK,确保 SDK 版本包含隐私清单。如果收到ITMS-91056或ITMS-91061错误,检查隐私清单文件的键类型和值是否符合要求。

11.5 年龄分级问卷未填写

自 2026 年 9 月起,提交新 App 或更新时必须回答年龄分级问卷中的社交媒体功能问题。如果你的 App 包含社交媒体功能,最低年龄分级将被定为 13+。

11.6 截图被拒

截图必须展示 App 的实际使用界面,不能只是标题图或启动页。6.9 英寸截图(1260 x 2736 像素)是主要接受的尺寸。不能用 AI 生成的图替代真实截图。

11.7 元数据被拒

确保 App 描述、截图、关键词都准确反映 App 的实际功能。不要包含价格、条款或其他不属于该元数据类型的描述。

11.8 低质应用被下架

苹果正在严厉打击低质应用。如果你的 App 属于饱和品类(手电筒、计时器、壁纸等),且长期不更新,可能被下架。提供独特价值是唯一的出路。

11.9 审核期间后端不可用

审核团队可能在任何时间测试你的 App。确保审核期间后端服务全天候可用。如果审核团队发现 App 无法正常使用,会被拒。

11.10 Bundle ID 不一致

Xcode 项目里的 Bundle ID 必须和 App Store Connect 里的一致。上传前双重检查。

11.11 忘记递增构建号

每次上传到 App Store Connect 都要递增构建号。如果构建号重复,上传会失败。

11.12 不要在 Preview 里测试发布

Preview 和真实设备的行为可能不同。发布前一定要在真实设备上测试。

11.13 TestFlight 构建过期

TestFlight 构建 90 天后过期。过期后测试员完全失去 App,包括登录状态和本地数据。如果要长期测试,记得定期上传新构建。

11.14 出口合规问题

如果你的 App 使用了加密技术,需要在提交时声明。大多数 App 使用系统提供的加密(如 HTTPS),可以选择“标准加密”豁免。

十二、第7课总结

这一课我们学习了 SwiftUI App 的发布与上架流程。我们学到了:

  1. Apple Developer Program 是发布的前提,个人账号 99 美元/年;
  2. 2026 年 4 月起,上传必须使用 iOS 26 SDK 或更高版本构建,即 Xcode 26+;
  3. 代码签名需要证书和描述文件,自动签名适合大多数场景;
  4. App Store Connect 是管理 App 的中心;
  5. 隐私清单是硬性要求,缺少或格式无效会被拒绝,大多数拒绝来自第三方 SDK;
  6. 2026 年 9 月起,年龄分级问卷中的社交媒体功能问题为强制填写,包含社交功能的 App 最低分级为 13+;
  7. 截图必须展示真实界面,6.9 英寸(1260 x 2736 像素)是主要接受的尺寸;
  8. 打包流程:Archive → 验证 → 上传;
  9. TestFlight 分内部测试(100 人)和外部测试(10,000 人),构建 90 天过期;
  10. 审核被拒要仔细读原因,针对性修改后重新提交;
  11. 分阶段发布可以在 7 天内逐步推送,有问题可暂停;
  12. 欧盟 DMA 合规对面向欧洲用户的 App 有额外要求。

发布让 App 走出去。学会它,你的作品就不只是躺在你的 Mac 上,而是能被全世界的人下载和使用。

如果把整个 App 的开发比作一场旅行:布局是规划路线,交互和动画是沿途的风景,持久化是行李,网络是交通工具,架构是地图,发布就是到达目的地。你走了很远,终于到了。

下一课,我们会学习 App 的运营与迭代:数据分析、用户反馈、A/B 测试、版本更新策略、变现方式。到那时,你的 App 就不只是“能走出去”,还能“走得远”。

十三、练习

练习一:注册开发者账号

如果你还没有 Apple Developer Program 账号,去 developer.apple.com/programs/ 注册一个。

练习二:创建 App 记录

在 App Store Connect 中创建一个 App 记录,填写基本信息。

练习三:准备截图

为你的 App 准备 6.9 英寸(1260 x 2736 像素)的截图,展示核心功能界面。

练习四:填写隐私营养标签

分析你的 App 收集了哪些数据,在 App Store Connect 中填写隐私营养标签。

练习五:添加隐私清单

在 Xcode 中为你的项目添加PrivacyInfo.xcprivacy文件,说明数据收集行为和使用的必要理由 API。

练习六:填写年龄分级问卷

在 App Store Connect 中回答年龄分级问卷,特别是新增的社交媒体功能问题。

练习七:打包与验证

Archive 你的 App,验证是否通过。确认使用了 iOS 26 SDK 或更高版本构建。

练习八:TestFlight 测试

上传构建到 TestFlight,邀请一个朋友测试。

练习九:提交审核

提交你的 App 进行审核,等待结果。

练习十:处理被拒

如果被拒,仔细阅读原因,修改后重新提交。

练习十一:分阶段发布

审核通过后,启用分阶段发布,观察用户反馈。

练习十二:隐私清单实战

检查你使用的所有第三方 SDK,确认它们是否包含有效的隐私清单。如果没有,联系 SDK 提供者获取更新版本。

下一课预告

第8课,我们会学习:

  • App 数据分析;
  • 用户反馈收集与处理;
  • A/B 测试;
  • 版本更新策略;
  • 变现方式:内购、订阅、广告;
  • 推送通知与用户留存;
  • App Store 优化(ASO)。

发布让 App 走出去,运营让 App 走得远。我们下一课见。

记住一句话:好的 App 不是发布完就结束了,而是发布完才刚刚开始。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询