App Store 年龄分级新规 2026|13+/16+/18+ 五级系统与 Declared Age Range API 开发者适配指南
2026 年 1 月 31 日是 Apple 给所有 iOS / iPadOS 开发者划出的第二个硬性 deadline:这一天起,App Store Connect 上的年龄分级系统从「4+ / 9+」两级扩为「4+ / 9+ / 13+ / 16+ / 18+」五级。配合五级分级,Apple 还推出了一组新问卷必填项、Declared Age Range API、PermissionKit、Child Account API、Screen Time API 3.0。这五项任何一项没跟到位,应用都会在审核环节或者区域上架环节被卡。
很多团队把它当作「审核小补丁」处理,结果提交后才发现:5+ 评级突然变成 13+,影响青少年下载;或新问卷里勾错了「无限制网页访问」直接被标 16+;或者在欧盟区域没实现 Declared Age Range API,被当地法规直接下架。
这篇文章把这些变化拆成 7 个部分:政策原文与时间线 → 五级分级对照 → 新问卷必填项 → Declared Age Range API 实战 → PermissionKit 与 Child Account API → 区域合规(澳大利亚 16+ / 越南 147 号令 / 巴西分级)→ Sandbox 测试与高频 FAQ。每节都尽量配 Swift / Objective-C 代码片段和 App Store Connect 操作路径,能直接照搬到工程里。
如果你已经看过《iOS 26 最低 SDK 要求与 App Store 审核新规 2026》和《App Store 审核被拒 2026 常见原因与申诉攻略》,可以把本文当作「年龄分级专章」配合阅读;如果是第一次接触 iOS 上架,建议先回看那两篇建立整体认知。
一、Apple 政策原文与时间线
先把 Apple 的官方要求摆在桌面上,避免后续讨论跑偏。
1.1 Apple Developer 官方公告
2025 年下半年,Apple 在 Developer News 分两批发布「Updated age ratings in App Store Connect」与「Age assurance frameworks and features」。核心内容如下:
- 2026 年 1 月 31 日(已生效):所有 App 的年龄分级自动按新系统重算,开发者必须在此日期前为每个 App 回答新问卷,否则提交更新会被中断。
- 2026 年 4 月 28 日(已生效):所有上传到 App Store Connect 的新应用和更新,必须使用 iOS 26 / iPadOS 26 SDK 或更高版本构建(参考 07-16 那篇 iOS 26 SDK 指南)。
- 2026 年 6 月 18 日(已生效):澳大利亚 15+ 评级下线,合并为 16+;越南按 Decree 147 实施区域分级(00+ / 12+ / 16+ / 18+)。
- iOS 26.0 起:Declared Age Range API(
AgeRangeDeclaration.selfDeclared/guardianDeclared)可用。 - iOS 26.2 起:新增
AgeRangeService.isEligibleForAgeFeatures、AgeRangeDeclaration.checkedByOtherMethod等高级查询;PermissionKit(SignificantAppUpdateTopic)可用。 - iOS 26.4 起:新增
AgeRangeService.requiredRegulatoryFeatures、AgeRangeService.showSignificantUpdateAcknowledgement系统级确认流程。
1.2 为什么 2026 年分级变化比 2024 / 2025 年更剧烈
三个原因:
- 欧盟 DMA 与英国 Age Appropriate Design Code 双重压力:监管要求开发者必须主动识别未成年用户,Apple 把这个责任从「可选」变成「必选」并通过 Declared Age Range API 把工具下发。
- AI 与 UGC 内容井喷:套壳 AI 应用、UGC 短视频、AI 陪伴类 App 大量涌入,4+ / 9+ 两级已经无法准确描述风险。
- App 内付费与广告激增:订阅、抽卡、Loot Box 的边界越来越模糊,需要更细的分级让家长做决策。
二、2026 五级年龄分级完整对照
2.1 等级定义与典型内容
| 等级 | 适合年龄 | 典型内容举例(来自 Apple 官方问卷) |
|---|---|---|
| 4+ | 4 岁以上 | 不含令人反感内容;可能有用户生成内容、消息聊天、广告、偶尔竞赛 |
| 9+ | 9 岁以上 | 健康/保健主题、抽奖箱、偶尔卡通或幻想暴力、枪支、低俗笑话、成人暗示、恐怖主题 |
| 13+ | 13 岁以上 | 偶尔医疗或治疗内容、烟酒/毒品、性内容/裸露、现实暴力/模拟赌博;频繁竞赛、枪支、低俗笑话、恐怖主题、卡通暴力 |
| 16+ | 16 岁以上 | 无限制网页访问、频繁成人或性暗示内容、医疗或治疗内容 |
| 18+ | 18 岁以上 | 赌博、频繁模拟赌博、烟酒/毒品、性内容/裸露、现实暴力 |
注:等级是「按内容出现频率和敏感度」算出来的,不是开发者手动选择的(但开发者可以主动调高一级)。
2.2 与旧版的核心差异
| 维度 | 2025 旧版(2 级) | 2026 新版(5 级) |
|---|---|---|
| 分级数量 | 4+ / 9+ | 4+ / 9+ / 13+ / 16+ / 18+ |
| 必填问卷 | 5-7 题 | 15+ 题(新增 App 内控件、功能、医疗健康、暴力主题四类) |
| 区域影响 | 单一全球分级 | 区域单独分级(澳大利亚、越南、巴西等) |
| 父母控制 | 仅靠系统设置 | App 可通过 Declared Age Range API 主动判断 |
| 重要更新 | 无 | PermissionKit 必须实现家长同意流程 |
2.3 关键判断规则
- AI 助手和聊天机器人 必须算入敏感内容频率(哪怕你没有专门做 AI 内容)。
- 无限制网页访问 单独触发 16+ 评级(哪怕主体内容是 4+)。
- 广告 存在但被人工审核通过,不直接升级;但用户生成内容里的广告可能升级。
- Loot Box(抽奖箱) 在澳大利亚 = 16+,全球其他地区默认 9+。
三、新版 App Store Connect 问卷必填项
3.1 问卷路径
App Store Connect → 我的 App → 选择 App → App 信息 → 年龄分级。每个 App 都要单独回答,新问卷共 4 大类 15 小题。
3.2 必填项清单
3.2.1 App 内控件(In-App Controls)
| 编号 | 题目 | 选项 | 影响 |
|---|---|---|---|
| C1 | 是否包含有害内容拦截(Parental Controls) | 是/否 | 是 → 可触发 4+ 基准线 |
| C2 | 是否包含年龄确认(Age Assurance) | 是/否 | 是 → 需配合 Declared Age Range API |
| C3 | 是否包含购买/沟通限制 | 是/否 | 是 → 影响青少年评级 |
3.2.2 功能(Capabilities)
| 编号 | 题目 | 选项 | 影响 |
|---|---|---|---|
| F1 | 是否包含无限制网页访问 | 是/否 | 是 → 16+ |
| F2 | 是否包含用户生成内容 | 是/否 | 是 → 至少 9+ |
| F3 | 是否包含消息/聊天 | 是/否 | 是 → 至少 9+ |
| F4 | 是否包含广告 | 是/否 | 是 → 至少 9+ |
3.2.3 医疗或健康主题
| 编号 | 题目 | 选项 | 影响 |
|---|---|---|---|
| H1 | 是否包含医疗/治疗信息 | 否/偶尔/频繁 | 偶尔 → 9+,频繁 → 13+ |
| H2 | 是否包含健康/保健主题 | 否/偶尔/频繁 | 偶尔 → 4+,频繁 → 9+ |
3.2.4 暴力主题
| 编号 | 题目 | 选项 | 影响 |
|---|---|---|---|
| V1 | 卡通或非现实暴力 | 否/偶尔/频繁 | 偶尔 → 9+,频繁 → 13+ |
| V2 | 现实暴力 | 否/偶尔/频繁 | 偶尔 → 13+,频繁 → 16+ |
| V3 | 持续/详细暴力 | 否/偶尔/频繁 | 偶尔 → 16+,频繁 → 18+ |
| V4 | 枪支或其他武器 | 否/偶尔/频繁 | 偶尔 → 9+,频繁 → 13+ |
3.3 主动调高分级的场景
如果你的产品策略要求用户必须满 16 岁(比如社交陪伴类 App),可以在回答问卷后手动调高一级:
App Store Connect → App 信息 → 年龄分级 → 选择更高级别 → 提交
调高后,App Store 产品页会直接显示你选择的等级(即开发者分配等级覆盖 Apple 计算等级)。这是 2026 年新增的能力。
3.4 常见踩坑
- 漏选「无限制网页访问」:很多 App 用了 WKWebView 但没意识到属于无限制访问,提交后被自动标 16+。
- Loot Box 误判:游戏中只要有付费开箱机制,澳大利亚区域一律 16+。
- AI 助手漏报:哪怕是接了 OpenAI / Claude API 做对话,也要按 9+ 申报(频繁出现敏感内容会升 13+)。
四、Declared Age Range API 实战(iOS 26+)
4.1 API 是什么
AgeRangeService 是 iOS 26 新增的框架,让 App 在运行时向系统请求用户的年龄段。它返回的不是具体年龄,而是 Apple 定义的年龄区间(如 13-15 / 16-17 / 18+)。同时返回「确认方式」(用户自报 / 监护人确认 / 支付凭证 / 政府 ID 等)。
4.2 为什么必须用
根据 Apple 官方政策:
在法律要求的具体地区,开发者必须使用 Declared Age Range API 检查 App 用户的年龄。 Apple 通过 Apple Account 信息确认年龄,并将年龄类别共享给开发者。
不实现的后果:
- 欧盟、英国 Age Appropriate Design Code 覆盖区域被当地监管下架
- Kids Category 应用直接被拒(5.1.4 条款)
- 家长在「屏幕使用时间」里给孩子的限制可能失效
4.3 基础调用(Swift)
import AgeRange
func requestAgeRange() async {
do {
let service = AgeRangeService.shared
let response = try await service.requestAgeRange()
switch response.ageRange {
case .selfDeclared(let range):
// 用户自己申报的年龄范围
print("Self-declared: \(range)")
case .guardianDeclared(let range):
// 监护人代为申报
print("Guardian-declared: \(range)")
case .checkedByOtherMethod(let method, let range):
// 通过其他方式确认(支付/政府ID等)
print("Method: \(method), Range: \(range)")
}
// 检查是否符合年龄限制功能
let isEligible = try await service.isEligibleForAgeFeatures()
if isEligible {
// 显示完整功能
} else {
// 限制功能
}
} catch {
print("Age range request failed: \(error)")
}
}
4.4 在重要更新时获取家长同意(PermissionKit, iOS 26.2+)
import PermissionKit
func handleSignificantUpdate() async {
do {
let topic = SignificantAppUpdateTopic(
updateDescription: "新增 AI 陪伴对话功能"
)
let result = try await topic.requestConsent()
switch result {
case .granted:
// 家长同意,继续展示新功能
enableNewFeatures()
case .denied:
// 家长拒绝,限制访问
restrictToSafeMode()
}
} catch {
// 处理 consent 撤销等异常
}
}
4.5 处理 Consent 撤销(App Store Server Notifications)
家长可以在系统设置里随时撤销同意。开发者必须监听 App Store Server Notifications 中的 RESCIND_CONSENT 通知:
// 后端收到通知后处理逻辑
func handleNotification(_ payload: [String: Any]) {
guard let type = payload["notificationType"] as? String else { return }
if type == "RESCIND_CONSENT" {
// 立即关闭该 App 的访问能力
disableAccount(payload["appAccountToken"] as? String)
}
}
4.6 区域差异
| 区域 | Declared Age Range 强制? | 法规依据 |
|---|---|---|
| 欧盟 | 是 | DMA + GDPR-K |
| 英国 | 是 | Age Appropriate Design Code |
| 美国加州 | 推荐 | COPPA + CCPA |
| 韩国 | 是 | 青少年保护法 |
| 日本 | 推荐 | 青少年网络环境整备法 |
| 中国大陆 | 无 | 暂未明确 |
| 其他 | 全球可用但不强制 | — |
重要:API 在全球都可用,但只有在当地法规要求时才是强制的。但为了合规和未来监管趋势,强烈建议所有出海 App 接入。
五、Child Account API 与 Sensitive Content Analysis 2.0
5.1 Child Account API
iOS 26 引入的 ChildAccountAPI 让 App 声明式响应当前登录用户的年龄段和监护人限制。和 Declared Age Range 的区别:
- Declared Age Range:App 主动询问用户
- Child Account:App 被动接收系统已确定的年龄段
import ChildAccount
func adaptToAccount() {
let account = ChildAccountService.shared.currentAccount
if account.isChildAccount {
// 自动启用儿童模式
disableInAppPurchase()
enableParentalGate()
}
}
5.2 Sensitive Content Analysis 2.0
iOS 17 引入的 SCSensitivityAnalyzer 原本只支持图像。iOS 26 扩展到视频、音频、文档:
import SensitiveContentAnalysis
let analyzer = SCSensitivityAnalyzer()
// 图像检测
func checkImage(_ image: UIImage) async -> Bool {
do {
let isSensitive = try await analyzer.analyzeImage(image)
return isSensitive
} catch {
return false
}
}
// 视频检测(iOS 26+)
func checkVideo(_ url: URL) async -> Bool {
do {
let isSensitive = try await analyzer.analyzeVideo(url)
return isSensitive
} catch {
return false
}
}
关键点:检测完全在设备本地完成,数据不上传 Apple。返回结果只是 true/false,App 不会知道具体原因。
5.3 Screen Time API 3.0(家长控制类 App 适用)
如果你的 App 本身就是家长控制类(如 Kidslox、Qustodio),iOS 26 的 Screen Time API 3.0 开放了第三方精细控制:
| 能力 | iOS 15-25 | iOS 26(API 3.0) |
|---|---|---|
| App 屏蔽 | ✅ | ✅ |
| 单 App 每日时长限制 | ❌(仅系统) | ✅ |
| 网站分类过滤 | 基础域名 | 分类 + 自定义规则 |
| 位置规则 | ❌ | ✅(基于位置的限制) |
| 活动报告 | ❌ | ✅(需家长同意) |
| 通信限制 | 仅系统 | ✅(第三方白名单) |
使用前必须申请 Family Controls entitlement(不是默认开通的,需要走 Apple 申请流程)。
六、区域合规:澳大利亚、越南、巴西
6.1 澳大利亚 16+ 合并(2026 年 6 月 18 日已生效)
- 15+ 评级取消,原本评 15+ 的 App 全部升至 16+
- 触发条件:无限制网页访问 / 频繁医疗内容 / Loot Box
- 应对:6 月 18 日前在 App Store Connect 确认问卷答案准确
6.2 越南 Decree 147(2026 年 6 月 18 日已生效)
越南按 Decree 147 第 38 条实施 4 级分级:00+ / 12+ / 16+ / 18+。
- 在越南 App Store 上架必须使用越南分级
- 系统根据你的问卷答案自动分配,无法手动选择
- 涉及赌博、色情、烟酒的 App 在越南有额外限制
6.3 巴西分级(MJSP)
巴西由司法部(MJSP)独立分级,分为:AL / A6 / A10 / A12 / A14 / A16 / A18。
- 苹果直接采用 MJSP 分类,开发者不能干预
- 固定赔率博彩 App 必须有 SPA 颁发的有效许可证
- 在 App Store Connect「App 审核信息」中提供许可证细节
6.4 其他高风险区域
| 区域 | 法规 | 重点 |
|---|---|---|
| 欧盟 | DMA + GDPR-K | Declared Age Range API 必接 |
| 英国 | AADC | Child Account API 必接 |
| 韩国 | 青少年保护法 | 23:00-6:00 强制青少年锁定 |
| 俄罗斯 | 联邦法 436 | VPN 工具必须提供家长模式 |
| 沙特 | CITC | 视讯/音频通话 App 需本地服务器 |
七、Sandbox 测试与高频 FAQ
7.1 Sandbox 测试年龄确认
iOS 26.2+ 提供了沙盒环境测试年龄确认流程,无需真实 Apple Account:
#if DEBUG
// 在 Xcode 26.2+ 中可设置测试用的年龄段
let mockResponse = AgeRangeDeclaration(
selfDeclared: AgeRange(lower: 13, upper: 15),
region: .europeanUnion
)
AgeRangeService.shared.setMockResponse(mockResponse)
#endif
测试场景:
- 不同年龄范围(4+ / 9+ / 13+ / 16+ / 18+)
- 区域限制(欧盟 / 加州 / 韩国)
- 授权状态变更(拒绝 / 撤销)
- Consent 撤销响应
7.2 高频 FAQ
Q1:13+ 评级会影响下载量吗?
会影响。家长在「屏幕使用时间」里给孩子的限制默认是 9+,被标 13+ 后这部分用户必须家长手动允许才能下载。但反过来,标 9+ 也能避免青少年误下载敏感内容。
Q2:不接 Declared Age Range API 能上架吗?
可以。Apple 不强制全球所有 App 接,但欧盟、英国、韩国等区域监管会强制要求。如果你的 App 涉及青少年、订阅、广告,建议接入。
Q3:Kids Category 还需要单独申请吗?
需要。Kids Category 申请条件:选择 5 岁以下 / 6-8 岁 / 9-11 岁分组 + 满足审核指南 1.3 / 5.1.4 + 提供 Parental Gate。
Q4:年龄分级选错会被拒吗?
会。开发者分配等级如果与 App 实际内容不符,会被 2.3.10(误导性元数据)拒审。
Q5:马甲包/App 矩阵如何统一管理问卷?
每个 App 单独回答问卷。建议建一个内部表格记录每个 App 的内容清单,对应到问卷选项,确保 50+ 个马甲包答卷一致。
Q6:游戏 Loot Box 在全球各地怎么算?
默认 9+。但在澳大利亚合并为 16+。日本/韩国按内容具体分析。
Q7:开发者可以调低等级吗?
不可以。开发者只能调高,不能调低。Apple 计算等级是最低保障。
Q8:旧 App 会被自动重新评级吗?
会。2026 年 1 月 31 日起,所有 App 自动按新系统重算。你可以在 App Store Connect → App 信息 → 年龄分级查看新等级。
八、最后:2026 年 7 月 20 日的实操清单
如果你今天/明天要提交更新,按这个顺序操作:
- 打开 App Store Connect → 选择要更新的 App → 进入「年龄分级」
- 回答新问卷(15+ 题)→ 提交
- 检查澳大利亚 / 越南 / 巴西区域分级是否准确
- 如果涉及青少年:在代码中集成 Declared Age Range API
- 如果有重大更新:集成 PermissionKit,处理 RESCIND_CONSENT
- Xcode 26 升级:iOS 26 SDK 是基础门槛(参考 iOS 26 指南)
- Sandbox 测试:在 Xcode 26.2+ 模拟不同年龄段、区域、撤销场景
- 提交审核 → 在备注栏写明「已按 2026 年新分级系统回答问卷」
整套流程跑完,你的 App 在 2026 年的合规姿态才算完整。年龄分级不是一个审核步骤,是产品策略的一部分。
相关阅读
- iOS 26 最低 SDK 要求与 App Store 审核新规 2026
- App Store 审核被拒 2026 常见原因与申诉攻略
- App Store 审核被拒原因 2026|TOP50 常见条款与申诉攻略
- 苹果 App Store 上架 2026 全攻略
- App Store 上架需要准备哪些资料 2026
- App Store Connect 后台配置全流程 2026