App Store年龄验证:德州、犹他、巴西
作者:Mehdi Azizi
发布于 ,13分钟
自2026年6月起,App Store 在德州验证年龄并向你提供年龄段。巴西、犹他、澳大利亚:用 Declared Age Range 该写哪些代码。
自 2026 年 6 月 4 日起,App Store 在德克萨斯州会验证新账户的年龄。你的 app 通过 Declared Age Range API 请求时,App Store 会把账户的年龄类别传给它。在法律有要求的地方,你得自己读取这个类别,在重大修改之前征得家长同意,还要处理家长撤回同意的情况。 巴西、犹他、路易斯安那和阿拉巴马各有各的时间表。在澳大利亚、巴西和新加坡,App Store 已经对未确认成年的用户屏蔽 18+ 的 app。
我自己用 Expo 发布 iOS app,包括 Solys 和 TradaZen。这篇文章里,我按地区整理了 Apple 和官方法律文本的说法,再给出要写的代码步骤。本指南不是法律意见:关于你的义务,连 Apple 自己都让你去问律师。 如果你要选择 4+ 到 18+ 的年龄分级,请看App Store Connect 中的年龄分级。
年龄验证对你意味着什么
根据Apple 关于 age assurance 的 FAQ,“developers are responsible for their own age restrictions”。在法律有要求的地方,Apple 会确认账户持有人的年龄,并与你共享其年龄类别。在这些地区,你必须验证使用你 app 的人的年龄。
有三点变化:
- 你拿到的是年龄段,永远不是确切年龄。 比如 Apple 会告诉你“13 到 15 岁”,以及这个年龄段是怎么确定的。
- 对 app 的重大修改可能需要家长同意。 什么算重大,由你根据适用的法律来判断。
- 家长可以撤回同意。 这时 Apple 会阻止 app 在孩子的设备上打开;如果你配置好了,你的服务器会收到
RESCIND_CONSENT通知。
不变的是:同一份 FAQ 写着,“there are no changes to the App Review process”。iOS 18 及更早版本上的已有账户不受影响。而 API 本身在全球都能用:在受监管地区之外,由用户自己选择是否共享年龄段。
审核不会因为这些法律而改变。Apple 把年龄传给你,要求你使用它的是法律。
德克萨斯:SB 2420 法案自 2026 年 6 月 4 日起适用
根据已通过的法案文本,德州 SB 2420 法案,即 App Store Accountability Act(第 121.001 节),原定 2026 年 1 月 1 日生效。2025 年 12 月 23 日,Apple 宣布一项地区法院禁令暂停了该法的实施。Apple 随即暂停了计划,相关工具只保留在 sandbox 中。
2026 年 6 月 3 日,Apple 宣布一项法院裁决解除了禁令:联邦第五巡回上诉法院在上诉期间中止了该禁令。自 2026 年 6 月 4 日起,德州的新 Apple 账户受该法约束。2026 年 7 月 6 日,美国最高法院拒绝撤销这一中止(案卷 25A1390)。这是紧急裁定,不是对实体问题的判决。截至 2026 年 10 月 27 日,我没有找到任何关于实体问题的上诉判决:该法正在适用,但情况仍可能变化。
App Store 在德州做了什么
对德州的每个新账户,App Store 都会验证年龄。对未满 18 岁的未成年人,它还会就三种操作征求家长同意:下载 app、进行 App 内购买、使用重大修改后的内容。家长可以撤回对任何已批准 app 的同意。
在2025 年 11 月 4 日的公告中,Apple 列出了该法的四个类别:13 岁以下、13 到 15 岁、16 和 17 岁、18 岁及以上。Apple 还提醒,这部法律可能迫使人们“just to download an app”就要提交敏感数据,哪怕只是一个天气 app。该法针对的是所有通过应用商店在德州提供 app 的开发者(第 121.051 节):简单的 app 也不在范围之外。
法律对开发者的要求
SB 2420 给你规定了四项义务:
- 用应用商店的数据验证年龄(第 121.054 节):每个用户的类别,以及未成年人是否已获家长同意。
- 这些数据只能用于年龄相关用途(第 121.055 节):限制、遵守法律、安全设置。验证完成后就要删除。
- 在对使用条款或隐私政策做任何重大修改之前通知应用商店(第 121.053 节)。
- 为 app 以及 app 内每项可购买的内容设定年龄分级(第 121.052 节)。在 App Store 上,app 的分级来自 App Store Connect 的问卷。
该法认为以下修改属于重大修改:改变收集或共享的数据、影响年龄分级、增加购买项目或广告,或明显改变功能或体验。Apple 补充说,德州把年龄分级的变化视为重大修改。
犹他、路易斯安那、阿拉巴马:2027 年的法律
Apple 2026 年 2 月 24 日的公告定了两个日期:对于新账户,API 本应从 2026 年 5 月 6 日起在犹他州、从 2026 年 7 月 1 日起在路易斯安那州传递年龄类别。新的信号会告诉你:年龄规则是否适用于该用户,用户是否必须共享年龄段,以及重大修改是否需要家长批准。这些州的成年人可能会收到重大修改通知:这时 Apple 会要求你清楚描述改动内容。
此后,这两部法律都被修改了:
- 犹他:H.B. 498 修改了 2025 年的 App Store Accountability Act(S.B. 142)。根据已通过的文本,应用商店和开发者的义务从 2027 年 5 月 6 日开始。重大修改的定义收窄了:指的是对条款或隐私政策的修改,且该修改改变了收集的数据、年龄分级,或首次加入 App 内购买或广告。
- 路易斯安那:HB 977 法案于 2026 年 5 月 15 日签署,成为Act 185。它阻止了 2025 年的法律(HB 570,即 Act 481)生效,并以新规则取而代之,自 2027 年 7 月 1 日起适用。
两部法律都要求开发者通过应用商店的工具验证年龄类别,并就重大修改通知应用商店。犹他禁止共享这些数据,路易斯安那禁止出售这些数据。
阿拉巴马采用了相同的模式。根据已通过的文本,其 HB 161 法案于 2026 年 2 月 17 日签署,成为 Act 2026-59,自 2027 年 1 月 1 日起适用。开发者需通过应用商店的工具验证年龄类别和家长同意,就任何重大修改通知应用商店,并且这些数据只能用于年龄、守法和安全目的。
截至 2026 年 10 月 27 日,Apple 没有就犹他和路易斯安那的延期发布任何公告,也没有提到阿拉巴马:请检查 API 实际给这些州的用户返回了什么。我的看法:工具先于义务准备好了,所以趁这几个月把代码写好、测好。
巴西:ECA Digital 自 2026 年 3 月 17 日起生效
《儿童和青少年数字法》即 ECA Digital,是2025 年 9 月 17 日第 15.211 号法律。根据其第 41-A 条,该法于 2026 年 3 月 17 日生效。有三条和你相关:
- 第 12 条:应用商店和操作系统要评估年龄或年龄段,并通过 API 向 app 传递年龄信号。儿童或青少年下载 app 需要家长自由且知情的同意。
- 第 13 条:年龄验证数据只能用于年龄验证。
- 第 14 条:面向儿童和青少年、或他们可能使用的 app,必须能够接收这一信号。无论应用商店做了什么,app 都要保留自己屏蔽不当内容的机制。
在 Apple 这边,用户或家长同意后才会共享年龄类别。在问卷中声明含付费战利品箱的 app,在巴西商店会变成 18+。如果你在巴西提供替代支付,Apple 关于在巴西分发的页面要求你为 18 岁以下用户设置家长门槛,且不得向他们提供网站购买。这个选项的佣金和步骤见巴西替代支付指南。
该法把监管交给一个独立的行政机构。律所引用的实施法令和该机构的指南对此做了细化:我没有读过它们的官方文本。调整 app 之前,请让巴西法律人士核实。
澳大利亚和新加坡:18+ app 被屏蔽
自 2026 年 2 月 24 日起,在澳大利亚、巴西和新加坡,只要用户未被确认成年,App Store 就会阻止其下载 18+ 的 app。App Store 会自动完成这项验证。Apple 指出,你可能有自己的义务去核实用户是否成年,API 会给你发信号来帮忙。Apple 没有点明相关的法律。
澳大利亚还有 Apple 公布的两条规则:
- 社交网络:自 2025 年 12 月 10 日起,部分社交平台必须阻止 16 岁以下的人拥有账户。相关开发者要停用 16 岁以下用户的现有账户,并监控注册。
- 年龄分级:自 2026 年 6 月 18 日起,澳大利亚取消 15+ 分级。含不受限网页访问、频繁医疗信息或付费战利品箱的 15+ app 改为 16+。分级的选择在年龄问卷中设置。
对于新加坡,Apple 除了屏蔽 18+ app 之外没有公布其他内容。
一览表:适用什么、从何时开始、你要做什么
下表汇总前面各节内容,截至 2026 年 10 月 27 日。“Apple”指 App Store 开始执行规则的日期,“法律”指法律文本中义务的生效日期。
| 地区 | 日期 | App Store | 你要做什么 |
|---|---|---|---|
| 德克萨斯 | 2026 年 6 月 4 日 | 验证年龄、家长同意 | 年龄段、同意、撤回 |
| 犹他 | 法律 2027 年 5 月 6 日 | 2026 年已宣布传递类别 | 2027 年 5 月 6 日前写好代码 |
| 路易斯安那 | 法律 2027 年 7 月 1 日 | 2026 年已宣布传递类别 | 2027 年 7 月 1 日前写好代码 |
| 阿拉巴马 | 法律 2027 年 1 月 1 日 | 未宣布任何内容 | 2027 年 1 月 1 日前写好代码 |
| 巴西 | Apple 2026 年 2 月 24 日,法律 2026 年 3 月 17 日 | 同意后传递类别,屏蔽 18+ | 读取信号,过滤内容 |
| 澳大利亚 | 2026 年 2 月 24 日 | 屏蔽 18+ | 社交网络:不允许 16 岁以下 |
| 新加坡 | 2026 年 2 月 24 日 | 屏蔽 18+ | 核实你自己的义务 |
你要写的代码:五个步骤
根据 Apple 的 FAQ,你需要用 iOS 26.2 和 iPadOS 26.2 或更新的 SDK、Xcode 26.2(17C52)或更新版本编译。然后在 target 上启用 Declared Age Range capability:它会加上 com.apple.developer.declared-age-range entitlement,这是API 文档要求的。
- 判断该用户是否适用某部法律。 从 iOS 26.4 起,
requiredRegulatoryFeatures会返回生效的规则:declaredAgeRangeRequired、significantAppChangeRequiresParentalConsent、significantAppChangeRequiresAdultNotification。在 iOS 26.2 上,isEligibleForAgeFeatures已经能告诉你用户是否适用年龄相关功能。 - 请求年龄段。
requestAgeRange(ageGates:_:_:in:)最多接受三个年龄门槛,比如 13、16 和 18,以对应法律中的类别。在法律规定了自己门槛的地方,返回结果按法律而不是按你的门槛。返回值是.sharing(range:)或.declinedSharing。年龄段包含lowerBound、upperBound和ageRangeDeclaration:由用户自己声明、由家长声明,或已确认。 - 处理重大修改。 对未成年人,PermissionKit 和
SignificantAppUpdateTopic会征求家长同意,家长会看到你写的描述。在家长同意之前,你要屏蔽新功能,甚至整个 app。对成年人,从 iOS 26.4 起,showSignificantUpdateAcknowledgment(in:updateDescription:)会弹出系统表单。StoreKit 的ageRatingCode属性给出设备上当前的年龄分级:比较它就能发现变化。 - 监听撤回同意。 启用第 2 版 App Store Server Notifications,并处理
RESCIND_CONSENT类型。Apple 已经会屏蔽 app。服务器端要由你来处理撤回,比如暂停该账户的访问。如果你的通知经过 RevenueCat,它可以转发到你的服务器。它的页面没有提到这个类型:请在 sandbox 中确认它确实能收到。 - 在 sandbox 中测试。 打开开发者模式,进入 Settings,然后 Developer。在你的 sandbox Apple 账户下选择 Manage,再选 Age Assurance 或 Revoke App Consent(按 Apple 文档中的英文名称)。Apple 的测试页面提供六个场景,从“13 岁以下,修改已批准”到“18 岁及以上,年龄已确认,修改适用”。撤回同意菜单需要填写你的 bundle ID,并会向你的服务器触发
RESCIND_CONSENT。
下面是一段 Swift 草稿,按 Apple 文档中的签名写成,需根据你的 app 调整:
import DeclaredAgeRange
import UIKit
@available(iOS 26.4, *)
func lireTrancheAge(depuis vc: UIViewController) async throws {
let service = AgeRangeService.shared
let regles = try await service.requiredRegulatoryFeatures
guard regles.contains(.declaredAgeRangeRequired) else { return }
let reponse = try await service.requestAgeRange(ageGates: 13, 16, 18, in: vc)
if case .sharing(let tranche) = reponse {
// tranche.lowerBound, tranche.upperBound, tranche.ageRangeDeclaration
}
}
在 sandbox 中,对于成年人,PermissionKit 会抛出 AskError.notAvailable 错误而不是返回结果:这是预期行为,成年人不需要家长同意。
用 Expo 或 React Native
Expo 发布了 expo-age-range 模块。我在 2026 年 10 月 27 日重读了它的文档,里面提供 requestAgeRangeAsync、isEligibleForAgeFeaturesAsync(iOS 26.2)、getRequiredRegulatoryFeaturesAsync 和 showSignificantUpdateAcknowledgmentAsync(iOS 26.4)。entitlement 在 Expo 配置的 ios.entitlements 中声明。
有两个限制要知道:
- 在 iOS 26 之前,该模块返回
lowerBound: 18,和成年人一样。 别把这个结果当成验证。 - Expo 文档既没提 PermissionKit,也没提
ageRatingCode。 要征求家长同意,就准备一个原生模块,或在写代码前再读一遍文档。RESCIND_CONSENT在服务器端处理,不在 app 里。
这是原生模块:需要重新 build,不能靠 OTA 更新。流程和用 EAS 把 Expo app 发布到 App Store一样。
你在法国发布:这和你有关吗?
Apple 的 FAQ 没有提到开发者所在的国家。所有合规问题,它都让你去问法律顾问。德州法律针对的是通过应用商店在德州提供 app 的开发者(第 121.051 节)。犹他和路易斯安那的法律把开发者定义为拥有或控制在该州可用的 app 的人,不设地点条件。
我的看法:只要你的 app 在这些地区之一可用,就默认这些规则适用于你。 你没法只排除德州,因为在 App Store Connect 中,上架范围是按国家设置的。为了回避这个问题而撤下美国或巴西,会让你失去两个大市场。
数据方面,年龄段仍是个人数据,德州、犹他、阿拉巴马和巴西的法律都把它的用途限制在年龄上。Apple 的开发者计划许可协议还加了自己的规则(第 3.3.3(O) 节):该 API 用于让 app 适配年龄或遵守法律,其数据不得出售,也不得与数据经纪商共享。按照guideline 5.1.1 的收集规则处理它,并重读guideline 5.1.2 的数据共享规则:各项法律是在这些规则之上叠加的。
下次更新前我的检查清单
- 列出你的 app 上架的地区:美国、巴西、澳大利亚、新加坡。
- 用 Xcode 26.2 或更新版本编译,并启用 Declared Age Range capability。
- 调用
requiredRegulatoryFeatures,然后用 13、16 和 18 岁作为门槛调用requestAgeRange。 - 写下对你的 app 来说什么算重大修改,并请法律人士确认。
- 接入家长同意请求(PermissionKit)和面向成年人的表单。
- 启用第 2 版服务器通知,并处理
RESCIND_CONSENT。 - 跑完六个 sandbox 场景和一次撤回同意。
- 检查你在年龄问卷中的回答:付费战利品箱在巴西会变成 18+,而对 13 岁以下关闭的社交网络必须使用该 API。
我核实了什么,以及何时核实
2026 年 10 月 27 日重读。日期和义务来自 Apple Developer 的公告、FAQ、文档、开发者许可协议和审核规则,各部法律的通过文本(德克萨斯、犹他、路易斯安那、阿拉巴马、巴西),以及最高法院的案卷。本指南不基于我 app 中的任何集成:代码是根据 Apple 签名写的草稿,不是经过测试的集成。巴西的法令、澳大利亚和新加坡的法律以及美国其他州的法律我都没有读过。
常见问题
Declared Age Range API 是什么?
这是 Apple 用来请求用户年龄段的 API,自 iOS 26 起在全球可用。在法律有要求的地方,Apple 会确认账户年龄并传递其类别。在其他地方,由用户选择是否共享。
分级为 18+ 的 app 也要用这个 API 吗?
要。Apple 的 FAQ 写得很清楚:在法律有要求的地区,即使是 18+ 的 app,你也必须用这个 API 验证用户年龄。App Store 在澳大利亚、巴西和新加坡的屏蔽并不能代替你自己的义务。
如果我不用这个 API,Apple 会拒绝我的 app 吗?
根据 Apple 的 FAQ,App Review 流程不会因为这些法律而改变。义务来自当地法律,而不是审核。不过 Apple 已有三条规则要求控制年龄。如果你声明了一个对 13 岁以下关闭的社交网络,Time Allowances 公告要求你至少使用该 API。审核规则要求创作者类 app(1.2.1)以及提供小程序、小游戏或聊天机器人的 app(4.7.5)按已验证或已声明的年龄限制访问。另外,guideline 2.3.6 一直要求你如实填写年龄问卷。
对 Apple 来说,什么是重大修改?
Apple 让你根据适用的法律自己判断,并让你去问律师。德州法律列举了收集的数据、年龄分级、购买项目、广告的变化,或功能的明显变化。修改后的犹他法律和阿拉巴马法律没有采纳最后这一点,路易斯安那的法律保留了它。
家长撤回同意会怎样?
Apple 会阻止 app 在孩子的设备上打开。如果你启用了第 2 版 App Store Server Notifications,你的服务器会收到 RESCIND_CONSENT 通知。
德州法律适用于法国开发者吗?
Apple 没有给出结论,而是让你去问法律顾问。德州法律针对的是通过应用商店在德州提供 app 的开发者,没有提到其所在国家。我的看法:如果你的 app 在美国上架,它在德州就可用,所以就当这部法律适用于你。
没有未成年人账户,怎么测试年龄验证?
用 sandbox,从 iOS 26.2 起可用。在 Settings,然后 Developer 中,你的 sandbox Apple 账户提供现成的年龄场景,以及针对你的 bundle ID 的模拟撤回同意。
来源
- Age assurance frameworks Q&A,Apple Developer FAQ。
- Apple Developer 公告:2025 年 11 月 4 日、2025 年 12 月 8 日、2025 年 12 月 23 日、2026 年 2 月 24 日、2026 年 5 月 21 日、2026 年 6 月 3 日和2026 年 6 月 8 日。
- 法律文本:德克萨斯 SB 2420、犹他 H.B. 498、路易斯安那 Act 185、阿拉巴马 HB 161、巴西第 15.211 号法律。
- Apple 规则:App Review Guidelines、开发者计划许可协议。
- 最高法院案卷 25A1390。
- Apple 文档:Declared Age Range、sandbox 测试、服务器通知类型。
- expo-age-range,Expo 文档。
下次更新之前
提交下一个版本之前,做一下免费诊断:它会告诉你项目真正卡在哪里,并把我的防拒审 Apple 检查清单发给你。
Apple Review Kit 包含我的提交前检查清单、我修复过的拒审案例,以及两个 Claude Code skill:它们会检查你的项目和商店页面,并在 Apple 拒审时帮你准备回复。完整流程见被 Apple 拒审的 app 页面。