App Store & Distribution 进阶 20m
App Store Connect 的新功能
What's new in App Store Connect
2023年6月5日
一句话判断
今年的 App Store Connect 更新覆盖了整个 App 生命周期——从 StoreKit for SwiftUI 的几行代码接入内购,到 900 个价格点位的灵活定价,到 TestFlight 的家庭共享测试,再到 xrOS 的隐私数据类型,每个环节都有实质性改进。
这场 Session 讲了什么
Session 按 App 开发生命周期梳理了 App Store Connect 的年度更新:
变现与定价:
- StoreKit for SwiftUI:在 App 中用几行 SwiftUI 代码展示内购/订阅页面。页面完全无障碍,自动本地化所有 App Store 语言。支持最小化实现和深度自定义(背景、按钮、样式)。还可以使用 App Store 上的推广图作为产品图标。
- 定价增强:900 个价格点可选。可以设置基准地区自动生成其他地区和币种的价格。支持自动国际定价(汇率/税率变化时自动调整)或手动管理。可按地区控制内购和订阅的可用性。
测试管理:
- TestFlight 增强:新增设备信息列(最近安装的设备和 OS 版本)。支持按测试者数据筛选,批量选择测试者(重发邀请、添加到组、移除)。所有数据通过 App Store Connect API 可用。TestFlight 现在支持 xrOS。
- Internal Only 构建:Xcode 分发时可以标记为”仅限内部”,防止意外发布到外部测试或提交审核。
- What to Test 自动化:Xcode Cloud 可以自动上传测试说明——通过项目目录下的文本文件或从 commit 消息提取。
- 沙盒测试增强:支持将沙盒测试账户组成家庭组(最多 6 人)来测试家庭共享。iOS 设备上可以直接管理家庭组成员、修改续订频率、测试中断购买、清除购买历史。
上架准备:
- 隐私标签新增 xrOS 数据类型:环境扫描(Environment Scanning)、手部数据(Hands)、头部数据(Head)。这些类型也可能适用于其他平台——比如钢琴教学 App 在 iPad 上收集手部运动数据就应该选择 Hands。
值得深挖的点
StoreKit for SwiftUI 改变了接入内购的成本结构。以前接入 StoreKit 需要处理产品请求、支付队列、收据验证、订阅状态管理等大量代码。现在 SwiftUI 的声明式方式把产品展示和购买流程封装成了组件。如果你的 App 不需要高度自定义的购买体验,这个 API 可以把接入时间从天缩短到小时。
900 个价格点 + 基准地区定价是面向全球化业务的重大升级。以前设置多地区价格需要逐个调整,现在选一个基准地区设定价格,其他地区自动生成。当某个地区的汇率或税率发生重大变化时,App Store 可以自动调整价格,不再需要你手动监控和修改。这对独立开发者和小团队尤其友好——你不需要雇人盯汇率。
沙盒测试的家庭共享填补了一个长期存在的测试空白。家庭共享是一个涉及多人、多设备、多订阅状态的复杂功能,以前在沙盒环境中几乎无法完整测试。现在你可以组建家庭组、测试共享和停止共享、验证续订行为——这在之前需要在生产环境中验证。
代码片段
StoreKit for SwiftUI 的基本用法(概念示例):
import StoreKit
// StoreKit for SwiftUI 让你用几行代码展示内购页面
// 产品在 App Store Connect 中配置后,Xcode 中即可使用
// 页面自动本地化到所有 App Store 支持的语言
// 页面完全支持无障碍访问
// 最简实现:使用默认样式
// 自定义实现:可修改背景、按钮样式等
// 还可以使用 App Store 推广图作为产品图标
TestFlight What to Test 自动上传:
// 方式1:在项目中添加文本文件
// 路径:<项目目录>/TestFlight/WhatToTest.txt
// 内容示例:
// - 新增法语和德语本地化支持
// - 修复后院详情页的布局问题
// - 更新订阅流程的错误处理
// 方式2:通过 Xcode Cloud 自定义构建脚本
// 从 commit 消息中提取测试说明
// 信息会自动上传到 App Store Connect
// 并在 TestFlight 中展示给测试者
最佳实践
- 评估 StoreKit for SwiftUI 是否满足你的需求——如果你的购买流程是标准的(展示产品、用户购买、验证收据),用 SwiftUI 封装能大幅减少代码量。需要深度自定义(比如自定义支付 UI)的场景仍然使用底层 StoreKit API。
- 设置定价时选择一个主要市场作为基准地区,让系统自动管理其他地区的价格。定期检查自动调整是否合理,必要时手动覆盖。
- TestFlight 的 Internal Only 标记适合包含敏感信息的原型构建——标记后即使误操作也不会泄漏到外部。
- 沙盒测试家庭共享时,先用 2-3 个测试账户组一个小家庭组,验证基本流程后再扩展到 6 人。
- xrOS App 的隐私标签要特别关注新增的三个数据类型。即使你的 App 不在 xrOS 上,如果在其他平台收集了手部或环境数据,也需要声明。
- 利用 App Store Connect API 自动化测试者管理、构建分发等重复操作。
还有什么值得关注
- 国际定价的自动调整机制意味着你的收入可能因汇率波动而变化。建议定期查看定价报告。
- TestFlight 的新增数据列(设备/OS 信息)帮助识别”只在旧设备上出现”的 bug。
- 隐私标签的新数据类型(Hands、Head、Environment Scanning)的定义比较宽泛——如果你的 App 用 ARKit 收集环境数据,即使不是 xrOS App 也需要声明。
- Xcode Cloud 的 What to Test 自动化只是 CI 集成的一部分,配合自定义构建脚本可以实现更完整的工作流。
- 搭配 “Meet StoreKit for SwiftUI”、“What’s new in App Store pricing”、“Simplify distribution in Xcode” 等 Session 可以获得每个主题的深入细节。
WWDC 2023