View in English

  • 打开菜单 关闭菜单
  • Apple Developer
搜索
关闭搜索
  • Apple Developer
  • 新闻
  • 探索
  • 设计
  • 开发
  • 分发
  • 支持
  • 账户
在“”范围内搜索。

快捷链接

5 快捷链接

视频

打开菜单 关闭菜单
  • 专题
  • 相关主题
  • 所有视频
  • 关于

更多视频

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 在你的 App 中提供适龄体验

    了解如何使用全新的 Declared Age Range API 在你的 App 中提供适龄体验。我们将介绍家长如何允许孩子与 App 共享年龄范围,以确保在保护隐私的情况下提供安全体验。我们还将探索此框架如何帮助你根据用户的年龄来定制你的 App 内容和功能,并展示如何实施年龄限制、理解缓存机制并尊重用户隐私,同时营造更安全、更有趣的体验。

    章节

    • 0:00 - 简介
    • 0:34 - 帮助增强儿童在线保护
    • 2:25 - Declared Age Range 框架
    • 7:00 - 请求提供年龄段
    • 12:22 - 保障儿童安全的更多方式

    资源

    • Declared Age Range
    • Design safe and age‑appropriate experiences for your apps and games
    • Helping Protect Kids Online
      • 高清视频
      • 标清视频

    相关视频

    WWDC25

    • 使用 PermissionKit 增强儿童安全保护
  • 搜索此视频…

    大家好 欢迎观看 “在你的 App 中提供适龄体验” 我叫 Austin 是 iCloud Family 部门的工程经理 在这个视频中 我将介绍三个主题 首先是帮助保护儿童安全上网 然后是 Declared Age Range 框架 最后 我将展示如何请求年龄段 并打造出色的适龄体验 首先 我来介绍一下 促使我们打造 Declared Age Range 框架的背景缘由 Apple 致力于通过创造新技术 来赋能用户 丰富用户的生活 同时帮助用户安全上网 并保护他们的隐私 我们希望所有年龄段的用户 都能在使用我们的产品和 服务时获得出色且安全的体验

    2025 年 2 月 Apple 发布了一份名为 《帮助保护儿童安全上网》的白皮书 保护儿童免受网络威胁 无论是针对幼儿、青春期前儿童 还是青少年 都将任重而道远 数字世界日趋复杂 家庭面临的风险也在不断变化 Apple 将践行对隐私、 保障与安全的坚定承诺 继续优化我们提供的可信赖工具 从而帮助家长 在注重隐私保护的前提下 保护自己的孩子 2025 年 3 月 Apple 推出了 简化的儿童设置流程 如果家长希望等到以后 再完成儿童账户的设置 系统会启用适合儿童的默认设置 在 iOS 26 中 Apple 为家长 提供了更正儿童年龄的功能 如果与儿童账户关联的年龄 之前设置有误 家长可轻松更正 此外 在 iOS 26 中 App Store 的全球年龄分级 发生了变化 将提供更细致的分级 现在有五个类别: 4+、9+、13+、16+、18+ 这些分级在产品页面上 添加了更多有用的信息 可帮助家长进一步 深入了解孩子的体验 最后 我们推出了新的 Declared Age Range API 这也是本视频的重点内容 接下来 我将详细介绍 Declared Age Range 框架 在适龄体验中 App 可以要求用户提供年龄段 提示本身将根据 App 的具体请求和用户年龄 进行自定 用户可以自行选择是否分享相应信息 App 可以根据用户的这一选择 来定制用户体验 这时 App 会询问用户 是否年满 16 岁 为了保护隐私 App 会提供一组 对用户体验有重要影响的年龄 然后 API 会返回一个 通过两个数字定义的年龄段 这有助于出生日期保持隐私状态 用户只需透露必要的信息 即可获得适当的体验 接下来 我将介绍不同的用户 如何声明自己的年龄段 在这个示例中 App 会询问的年龄为 13 岁和 16 岁

    Olivia 今年 14 岁 所以她可以 声明自己在 13 到 15 岁

    Emily 今年 9 岁 所以她可以声明 自己在 12 岁或以下

    Ann 今年 42 岁 所以她可以声明 自己在 16 岁或以上 在每种情况下 都不会向 App 透露出生日期 Declared Age Range 框架 用于保护儿童和青少年的体验 因此 这个 API 将针对提供的 所有年龄设置一个地区性最大值 最大值将始终是 相应地区成年人的年龄 不同的 App 有不同的要求 每个 App 可以在一个请求中 指定最多 3 个不同的年龄 这样便可得到四个不同的年龄段 每个年龄段必须涵盖至少两年的时间

    决定 App 适合哪些年龄段的用户 从根本上来说取决于 App 希望向不同年龄段的用户 展示或隐藏哪些体验

    一些 App 可能会 根据地区要求来确定这一点 或者认为这是提供最佳体验所必需的 在与孩子有关的用户引导期间 家长 可以详细了解 Declared Age Range 确认孩子的年龄 并选择适合孩子的分享选项 还有一种方法是 进入“家人共享”设置 轻点某个孩子 进入“Apple 账户与密码” 然后选择“App 年龄段”

    你也可以在孩子的设备上 进行相关管理 方法是 前往“Apple 账户”设置 轻点“个人信息” 这时也会显示“App 年龄段” 针对这个 API 有三个不同的设置 这个用户处于“始终”分享状态 “始终”分享会自动返回 App 询问的年龄段 如果有新信息披露 则会显示通知

    这个用户处于“先请求许可”状态

    “先请求许可”会显示提示来提醒 用户选择是否分享相应信息

    这个用户处于“永不”分享状态 “永不”分享将总是拒绝分享 当 App 请求用户年龄时 系统不会显示任何内容 确保出生日期保持隐私状至关重要

    因此 Declared Age Range 框架中 还有其他措施 可用于保护隐私 当处于“先请求许可”模式时 系统默认只会 在初始回复的周年日显示提示 同样 在“始终”分享状态下 系统默认只会在初始回复的 周年日显示新的年龄信息

    举个例子 如果一个孩子年满 13 岁 进入了一个新的年龄段 在周年日之前 API 仍将返回“12 岁或以下”

    然后 在初始年龄声明的周年日 API 会在收到请求后自动分享 或提示用户分享年龄信息

    这可以帮助用户防止泄露出生日期

    最后 用户还可以 允许 App 进行重新提示 以便接收当前年龄 例如 在用户生日过后的周末 用户激动地要立即使用 适合更大年龄孩子的功能 他们不必等待周年日 在“设置”下的“App 年龄段”中 他们可以强制清除缓存 方法为 找到相应 App 然后轻点“再次分享年龄段”

    这样当 App 下次请求年龄时 便可以在响应中 提供更新后的年龄段

    打造适龄体验 实际上在于修改 App 中的功能 以确保它们适合用户 为了进行说明 我将完成以下练习: 构建我之前展示的适龄体验

    App 现在可以根据是否适合 用户年龄来选择更改体验 在这个示例中 照片共享功能 将不可用 除非“Landmarks”App 可以确认孩子的年龄段 并确定这个功能为适龄体验

    首先 你需要将 Declared Age Range 功能 添加到自己的项目 前往项目目标中的 “Signing & Capabilities”标签页 点按加号按钮

    然后选择“Declared Age Range”

    现在 我将进入示例 App UI 并开始编码 这便是“Landmarks”App 它显示了一系列地标 轻点后 我会看到一条详细说明

    这是这个地标的详细信息视图 在这里 我想添加新的照片共享功能

    我添加了一个变量 用于跟踪是否已启用这个功能 添加了一个环境变量 用于帮助 API 了解 在哪个窗口上显示提醒 这在 App 拥有多个窗口的 用例中很重要 例如在 iPad 或 Mac 上 然后添加一个按钮来检查 是否应启用这个功能 这个功能默认处于停用状态

    现在 我将深入介绍一下 requestAgeRangeHelper

    这个方法包含所有用于 请求和接收来自 API 的响应的逻辑

    API 允许 App 在运行时指定年龄 因此 对于每个地区或用例 请指定在对应情境下 适用于你 App 的年龄 由于时间有限 我添加了一条注释 指明稍后实现用于 检查用户所在地区的代码

    使用 requestAgeRange 方法 请求年龄段 并提供你关心的年龄 在这个示例中 我想知道 用户是否年满 16 岁

    我已经准备好实现 用于处理响应的代码 响应将返回一个等于 sharing 或 declinedSharing 的枚举

    如果枚举等于 sharing 则用户同意分享 系统将返回一个下界和上界 这代表 API 返回的年龄段 如果枚举等于 declinedSharing 则用户选择不分享

    我现在将检查下界 是否大于或等于 16

    如果是 我可以假设上界为 nil

    前面说过 上界和下界值可以为 nil 这用于表示诸如“12 岁或以下” 或者没有上界的年龄段 比如“16 岁或以上”

    如果他们年满 16 岁 我将启用照片共享按钮 如果他们的年龄为 15 岁或以下 这个按钮将保持停用状态 如果分享了年龄段 你还将 获得一个 ageRangeDeclaration 值

    对于儿童 这个值将始终为 guardianDeclared 对于青少年 如果是在一个 iCloud 家庭中 则值为 guardianDeclared 如果他们不属于一个 iCloud 家庭 则将为 selfDeclared

    对于成年人 这个值是 selfDeclared 现在 回到代码 API 也可以抛出错误 我将添加一些代码来处理错误 错误 invalidRequest 是开发者生成的错误 表示请求本身有问题 例如 你使用的年龄段 所涵盖时间不足两年 错误 notAvailable 表示需要由 App 来处理的设备配置问题 例如 用户尚未使用 Apple 账户登录设备 现在 我将以上所有内容融会贯通 并演示用户体验

    当我打开这个地标的详细信息视图时 会有一条提醒询问我是否要分享 我已年满 16 岁这一信息 我选择分享 如预期的那样 现在可以获得照片共享体验

    还有一些细节值得了解 由于系统会经常调用这个 API 因此将缓存相关响应 这样用户就不必 总是回答提示 实际上 这意味着 App 无需担心 调用 API 会导致 提示用户的次数过多

    缓存的响应会在设备之间同步 例如 在 iPhone 上分享的 缓存年龄段将同步到 Mac

    用户可以在“设置”中管理缓存响应

    此外 如果年龄段的上界 低于成年年龄 API 将返回父母为孩子 配置的一组额外家长控制 在这里 我编写了代码 来检查是否为儿童 启用通信限制

    如需了解更多相关信息 请观看“使用 PermissionKit 增强儿童安全保护” 利用这个框架的 App 能够让家长控制 孩子可以在第三方体验中 与哪些人交流

    这就是新的 API 此外我们还提供了其他一些 可供你保护用户的功能

    Sensitive Content Analysis API 可帮助 App 提供更安全的体验 因为它会在屏幕上 显示图像和视频之前 检测是否存在裸露内容并提醒用户

    在 iOS 26 中 Sensitive Content Analysis API 已得到扩展 可检测和阻止 直播流媒体视频通话中的裸露内容

    Screen Time 框架 为 App 提供了帮助家长和 监护人监督孩子上网情况 所需的工具 此外 “家人控制”可帮助 App 在设备上提供自己的家长控制

    现在你已了解适龄体验 接下来你需要完成以下工作:

    前往 developer.apple.com/cn 查看 Apple 的儿童安全工具 根据需要添加适龄体验

    使用 Declared Age Range 框架正确 设置适龄体验的临界年龄

    感谢你在 App 中添加适龄体验

    • 8:03 - Request an age range

      // Request an age range
      
      import SwiftUI
      import DeclaredAgeRange
      
      struct LandmarkDetail: View {
          // ...
          @State var photoSharingEnabled = false
          @Environment(\.requestAgeRange) var requestAgeRange
          
          var body: some View {
              ScrollView {
                  // ...
                  Button("Share Photos") {}
                      .disabled(!photoSharingEnabled)
              }
              .task {
                  await requestAgeRangeHelper()
              }
          }
      
          func requestAgeRangeHelper() async {
              do {
                  // TODO: Check user region
                  let ageRangeResponse = try await requestAgeRange(ageGates: 16)
                  switch ageRangeResponse {
                  case let .sharing(range):
                       // Age range shared
                      if let lowerBound = range.lowerBound, lowerBound >= 16 {
                          photoSharingEnabled = true
                      }
                      // guardianDeclared, selfDeclared
                      print(range.ageRangeDeclaration)
                  case .declinedSharing:
                      // Declined to share
                      print("Declined to share")
                  }
              } catch AgeRangeService.Error.invalidRequest {
                  print("Handle invalid request error")
              } catch AgeRangeService.Error.notAvailable {
                  print("Handle not available error")
              } catch {
                  print("Unhandled error: \(error)")
              }
          }
      }
    • 11:49 - Communication Limits

      // Request an age range
      
      func requestAgeRangeHelper() async {
          do {
              // TODO: Check user region
              let ageRangeResponse = try await requestAgeRange(ageGates: 16)
              switch ageRangeResponse {
              case let .sharing(range):
                  if range.activeParentalControls.contains(.communicationLimits) {
                      print("Communication Limits enabled")
                  }
                  // ...
              case .declinedSharing:
                  // Declined to share
                  print("Declined to share")
              }
          } catch {
              // ...
          }
      }
    • 0:00 - 简介
    • 进一步了解 Declared Age Range 框架,以及如何请求获取年龄段,以便在 App 中创建适龄体验。

    • 0:34 - 帮助增强儿童在线保护
    • Apple 于 2025 年 2 月发布了一份白皮书,概述了对保护儿童安全上网的承诺。随后,Apple 推出了简化的儿童设置流程。从 iOS 26 开始,家长可以更正儿童账户的年龄,App Store 的全球年龄分级现在也更加具体 (4+、9+、13+、16+、18+)。

    • 2:25 - Declared Age Range 框架
    • Declared Age Range 框架旨在帮助保护用户隐私,尤其是对于儿童和青少年。当 App 要求提供年龄时,这一框架会向用户显示可供选择的年龄段,而不是询问他们的确切出生日期。每个 App 可以在一个请求中指定最多 3 个年龄,从而形成 4 个年龄段,每个年龄段的持续时间至少为两年。 家长可以从以下三种分享设置中进行选择:“总是分享”、“先询问”和“从不分享”。该框架还包括地区性最大年龄设置和默认提示频率,以尽量减少个人信息的泄露。家长可以在新手引导期间或在“设置”App 中管理孩子的年龄段设置。

    • 7:00 - 请求提供年龄段
    • 现在,你可以根据用户年龄来修改功能,从而打造适合对方年龄的体验。为此,你的 App 必须启用“Declared Age Range”功能。 然后,你可以添加代码,从 DeclaredAgeRange API 请求用户的年龄段。这个 API 会返回一个枚举值,指示用户是否分享了年龄信息。如果是,则会返回年龄段的上下界。然后,App 会相应地启用或停用特定功能,例如照片共享按钮。 系统会缓存响应,以避免频繁提示用户,并且这些缓存的响应会在设备之间同步。用户可以在“设置”App 中管理缓存的响应。此外,如果用户未成年,这个 API 会返回一组额外的家长控制设置。

    • 12:22 - 保障儿童安全的更多方式
    • Apple 提供了相关 API 和框架,来帮助开发者保护用户 (尤其是儿童) 免受图片、视频和直播中裸露内容的侵害。你可以前往 developer.apple.com/cn,查看 Apple 的儿童安全工具。

Developer Footer

  • 视频
  • WWDC25
  • 在你的 App 中提供适龄体验
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载 (英文)
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    获取 Apple Developer App。
    版权所有 © 2025 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则