View in English

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

快捷链接

5 快捷链接

视频

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

返回 WWDC25

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 使用 PermissionKit 增强儿童安全保护

    了解 PermissionKit 如何帮助你的 App 增强儿童通信安全。我们将向你展示如何使用这一全新框架来创建适龄通信体验,并利用“家人共享”请求获得家长批准。你将了解如何构建与“信息”无缝整合的权限请求、处理家长答复,并为儿童用户量身定制 UI。为了充分从这个讲座中获益,我们建议你先观看 WWDC25 讲座“在你的 App 中提供适龄体验”视频。

    章节

    • 0:00 - 简介
    • 2:40 - 了解 PermissionKit
    • 3:26 - 为儿童用户量身定制 UI
    • 4:38 - 构建“询问”体验
    • 7:02 - 家长/监护人的回复
    • 10:27 - 保障儿童安全的更多方式

    资源

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

    相关视频

    WWDC25

    • 在你的 App 中提供适龄体验
  • 搜索此视频…

    大家好 我是 Family 团队的 工程师 Andrew 欢迎观看“使用 PermissionKit 增强儿童安全保护”

    家长最重要的责任 就是保障孩子的安全 在数字环境中 对儿童安全的保障始于 孩子与家长或监护人之间的对话

    在涉及孩子上网时的 通信对象时更是如此 从 App 发起这种对话 可能比较困难 并且涉及不菲的技术开销 最适合家长与孩子进行沟通的地方 就是他们已经在进行 沟通的地方:“信息” 在 iOS、iPadOS 和 macOS 26 中 你可以借助 PermissionKit 让孩子和家长 在“信息”中发起对话

    通过 PermissionKit 孩子可以请求家长 同意他们与新朋友通信 在这个视频中 我首先要向大家 介绍全新 PermissionKit 框架

    然后 我会展示如何 使用这个全新 API 在充分考虑儿童安全的前提下 相应调整 App 的 UI

    接下来 我会讲解如何创建通信权限 有了它 孩子可以直接在“信息”中 请求家长或监护人的许可

    最后 我会展示如何 侦听家长或监护人的回答 并做出响应 这个视频假设你的 App 具有通信功能 并且你已经有办法确定每个用户的 年龄或年龄段 我即将展示的 PermissionKit API 只适用于 已知当前用户是儿童的情况 如果你还没有自己的账户系统 来确定当前用户是不是儿童 请使用全新的 Declared Age Range API

    家长可以允许孩子 分享与孩子的儿童账户 关联的年龄段 然后 App 就可以通过 Declared Age Range API 请求这个年龄段 了解更多详情 请观看 WWDC25 视频 “在你的 App 中提供适龄体验”

    在判断 PermissionKit 是否适合你的 App 时 还需要考虑另外一些因素

    PermissionKit 会利用用户的 “家人共享”群组 在孩子 与家长或监护人之间建立联系

    这意味着要想充分发挥 PermissionKit 的潜力 用户必须是 “家人共享”群组成员 如果提出请求时 孩子不是“家人共享”群组成员 那么 API 就会返回默认响应 此外 家长或监护人必须 为孩子启用通信限制 如果没有启用通信限制 那么 API 也会返回默认响应

    首先 我要向大家 介绍 PermissionKit PermissionKit 是一个全新框架 提供了一种简单快捷的方法 可以在请求方和授权方之间 打造一致的一流权限体验 在 iOS、iPadOS 和 macOS 26 中 你可以采用 PermissionKit 来帮助确保儿童安全上网 可以使用 PermissionKit 让“家人共享”群组中的 孩子与家长或监护人 在“信息”中发起对话 在你的 App 中 孩子可以请求 通过“信息”与新朋友 进行通信 由此在“信息”中发起对话 然后家长可以直接在这个对话内 批准或拒绝孩子的通信请求

    接下来谈谈如何 采用 PermissionKit 首先是如何让 UI 变得 适合相应年龄段 Landmarks 是一款用于查看 和了解地标详细信息的 App 我会通过一个示例来讲解如何 给这个 App 添加新的聊天功能 让用户能够互相交流 自己喜爱的地标 Landmarks 是一款 适合所有年龄段的 App 因此 PermissionKit 非常适合它

    对于儿童 你的 App 应该 始终隐藏来自未知发送者的内容 这方面的例子包括 消息预览、个人资料头像 以及任何其他可能不适合 儿童观看的敏感内容

    为此 可以采用的实现方式之一 是等待 CommunicationLimits 单一实例的 knownHandles(in:) 方法 给定一组句柄 这个 API 可以执行经过优化的查找 并返回这些句柄的系统已知子集 可以使用你自己数据库 中的信息作为补充 如果你可以在自己的 系统中获得这些数据 就无需从头开始 然后 确定孩子尝试 进行交互的句柄或句柄组 只包含已知句柄 只有在句柄已知的情况下 才显示基础内容

    接下来 我将展示如何 创建和发送问题 让孩子能够请求家长许可 PermissionKit 提供了 问题抽象 其中包含了孩子权限请求的 所有详细信息 每个问题都有一个主题 其中进一步描述了 所询问的问题 例如 通信主题以某种方式 将孩子尝试进行通信的 某个人或一群人的 所有相关信息整合在一起 这些信息至少包含一个 与这个人员对应的句柄 具体来说就是这个人的 电话号码、电子邮件地址 或其他身份标识 比如用户名

    接下来深入了解一下代码 创建权限问题 传入未知句柄

    还可以添加特定句柄的元数据 最好添加尽可能多的元数据 系统会向家长或监护人显示 你提供的所有元数据 这些元数据可以提供有用信息 帮助家长或监护人做出 批准或拒绝孩子请求的决策 为此 创建一个 CommunicationTopic

    CommunicationTopic 会使用 PersonInformation

    PersonInformation 具有适用于 句柄、名称和图像的可见功能 你还可以选择设置针对主题的操作

    所选操作应该与孩子 尝试与指定人员通信的方式相对应

    系统向家长显示需要审核的请求时 会根据你选择的具体操作 使用特定的措辞方式

    在这个示例中 我使用的是信息 但你也可以提供通话、 视频等方式

    最后 使用自定 CommunicationTopic 对 PermissionQuestion 进行初始化

    现在 使用你创建的 PermissionQuestion 对 SwiftUI 视图中的 CommunicationLimitsButton 进行初始化

    孩子轻点这个按钮后 会收到系统提示 然后可以根据提示 选择在“信息”中 向家长或监护人发送问题

    对于 UIKit App 使用 CommunicationLimits 单一实例 在孩子的设备上 启动请求流程 需要传入 UIViewController 系统将用它来呈现 UI

    对于 AppKit App 还可以使用 CommunicationLimits 单一实例 在孩子的设备上启动请求流程 只需提供 NSWindow

    关于提出请求的体验 我要说的就是这么多 现在要做的只剩下 处理家长或监护人 选择的回复了 家长在“信息”中做出响应后 孩子的设备将在后台 启动你的 App 你需要在收到这些响应时处理它们

    App 启动后不久 从 CommunicationLimits 单一实例 获取 AsyncSequence 并在后台任务上对它进行迭代 以便 App 始终可以 收到权限更新通知 收到响应后 借这个机会来 更新 UI 或将新数据 发布到你自己的数据库

    这样就可以了 就是这样 接下来 我要综合运用以上所有内容 讲解它在 Landmarks 中的工作方式 左边是孩子的设备 右边是家长的设备 在孩子设备上的 Landmarks 中 打开了我新增的聊天视图

    默认情况下 对孩子隐藏 所有未知句柄的 信息预览

    轻点其中一个对话 就会显示对孩子 隐藏的信息内容 孩子如果不先请求 家长或监护人许可 就无法回应这些内容

    孩子轻点通信限制按钮后 系统会显示一条提醒 让孩子能够确认自己想要 向家长或监护人发送信息 或者 孩子也可以通过 屏幕使用时间密码 获得家长或监护人亲自批准 如果孩子轻点提醒中的 “Ask to Approve”选项 系统会显示信息编写窗口 并在接收者栏位中预先填入 孩子所在“家人共享”群组中的 家长或监护人 并以文本视图的形式显示问题

    孩子可以选择轻点添加按钮 (+) 或“Edit Name”按钮 来为这个人添加名称 如果你通过前面讨论的 PermissionQuestion API 提供这个人的元数据 那么这些元数据会显示在这里 当家长或监护人在自己的设备上 对请求进行审核时 系统会向他们显示这些元数据

    孩子轻点发送按钮后 系统会将问题发给 孩子的父母或监护人 就像发送 任何其他 iMessage 信息一样

    现在 我们将注意力 转到家长的设备上 家长在“信息”中 收到孩子提出的问题后

    可以直接在聊天气泡中予以拒绝 也可以选择对这个请求进行审核

    如果进行审核 他们会看到 这个请求的更多背景信息 可以选择批准或拒绝这个请求

    无论家长如何选择 孩子都会自动收到通知 告知他们家长的选择 在孩子收到通知的同时 也会在后台直接将家长的选择 传送至你的 App App 通过更新 UI 和本地缓存 或通过向你的服务器发布信息 来对家长的选择做出响应

    现在 家长已经批准了 孩子可以在 Landmarks 中 看到并回应这个人发来的信息 现在 你已经了解了 如何采用 PermissionKit 接下来介绍一下为了增强 App 中的 儿童安全 需要考虑的其他事项 将 PermissionKit 用作启动台 通过在你自己的服务器上 持久保留从 PermissionKit 获取的数据 在 Apple 平台之外 比如在 App 的网站上 添加类似的体验 此外 不要止步于 PermissionKit 请判断一下你的 App 是否适合采用我们提供的 其他家庭和儿童安全 API 例如 这里还有使用我们的 API 保障孩子安全的更多方式 全新 Sensitive Content Analysis API 扩展了通信安全的范畴 能够通过检测并屏蔽 直播流媒体视频通话中的 裸体画面来保护孩子 借助全新 Declared Age Range API 你可以为孩子打造 适合他们年龄的安全体验

    Screen Time 框架 提供了你需要的工具 可以帮助家长和监护人 监督孩子的上网情况 借助 Family Controls 框架 App 可以提供自己的 家长控制措施

    现在 你已经了解了如何 使用 PermissionKit 改善 App 的儿童安全 接下来看看下一步该怎么做 首先需要使用 来自你自己的服务器的数据 或使用全新 Declared Age Range API 来确定每个用户的年龄段 然后 在考虑到儿童的前提下 对 App 的 UI 进行相应调整 然后 采用 PermissionKit 创建要询问的问题以及 对家长或监护人所做回答的响应

    感谢大家听我介绍 PermissionKit

    • 4:03 - Tailor your UI for children

      import PermissionKit
      
      let knownHandles = await CommunicationLimits.current.knownHandles(in: conversation.participants)
      
      if knownHandles.isSuperset(of: conversation.participants) {
          // Show content
      } else {
          // Hide content
      }
    • 5:15 - Create a question

      import PermissionKit
      
      var question = PermissionQuestion(handles: [
          CommunicationHandle(value: "dragonslayer42", kind: .custom),
          CommunicationHandle(value: "progamer67", kind: .custom)
      ])
    • 5:38 - Create a question - additional metadata

      import PermissionKit
      
      let people = [
          PersonInformation(
              handle: CommunicationHandle(value: "dragonslayer42", kind: .custom),
              nameComponents: nameComponents,
              avatarImage: profilePic
          ),
          PersonInformation(
              handle: CommunicationHandle(value: "progamer67", kind: .custom)
          )
      ]
      
      var topic = CommunicationTopic(personInformation: people)
      topic.actions = [.message]
      
      var question = PermissionQuestion(communicationTopic: topic)
    • 6:25 - Ask a question - SwiftUI

      import PermissionKit
      import SwiftUI
      
      struct ContentView: View {
          let question: PermissionQuestion<CommunicationTopic>
      
          var body: some View {
              // ...
              CommunicationLimitsButton(question: question) {
                  Label("Ask Permission", systemImage: "paperplane")
              }
          }
      }
    • 6:43 - Ask a question - UIKit

      import PermissionKit
      import UIKit
      
      try await CommunicationLimits.current.ask(question, in: viewController)
    • 6:54 - Ask a question - AppKit

      import PermissionKit
      import AppKit
      
      try await CommunicationLimits.current.ask(question, in: window)
    • 7:19 - Parent/guardian responses

      import PermissionKit
      import SwiftUI
      
      struct ChatsView: View {
          @State var isShowingResponseAlert = false
      
          var body: some View {
              List {
                 // ...
              }
              .task {
                  let updates = CommunicationLimits.current.updates
                  for await update in updates {
                      // Received a response!
                      self.isShowingResponseAlert = true
                  }
              }
          }
      }
    • 0:00 - 简介
    • PermissionKit 是适用于 iOS、iPadOS 和 macOS 26 的新框架,可简化权限申请流程,并支持儿童与其家长或监护人之间通过“信息”对话,对新的通信请求进行审批。

    • 2:40 - 了解 PermissionKit
    • 借助 PermissionKit,儿童可以在“信息”App 中向其家长或监护人征求许可,以便与新朋友在线交流。这个框架会利用“家人共享”群组,并要求启用通信限制。该框架旨在通过促进儿童和家长之间就在线互动进行公开对话,帮助开发者在 App 内为儿童创造更安全的沟通体验。

    • 3:26 - 为儿童用户量身定制 UI
    • PermissionKit 可帮助开发者打造契合特定年龄段用户需求的 App。以“Landmarks”App 为例,一项全新的聊天功能可对儿童用户隐藏来自未知发送者的内容。使用通信限制“knownHandles(in:)”方法可检查系统或数据库能否识别账号,并且仅向儿童显示已知账号的内容。

    • 4:38 - 构建“询问”体验
    • 可创建权限请求问题,供儿童发送给家长。这些问题涵盖通信等主题,详细说明儿童希望联系的对象 (如账号、姓名、头像) 以及通信方式 (如消息、通话、视频)。 使用“CommunicationTopic”对“PermissionQuestion”进行初始化,然后创建“CommunicationLimitsButton”以触发系统提示,让儿童能够通过“信息”将请求发送给家长以待批准。UIKit 和 AppKit App 可以通过 CommunicationLimits 单一实例在儿童的设备上启动请求流程。

    • 7:02 - 家长/监护人的回复
    • 在“信息”中收到家长的回复后,App 会在儿童设备的后台启动。然后,App 从 CommunicationLimits 单一实例获取“AsyncSequence”以监控权限更新。 当系统收到响应时,App 会相应地更新其 UI 或数据库。在 Landmarks App 的示例中,该 App 会在获得家长授权之前,对儿童用户隐藏来自未知账号的消息预览和内容。 儿童可以发起与新联系人通信的权限申请,家长可以在他们的“信息”App 中查看和批准或拒绝这些请求。然后,当家长做出决定后,儿童的 App 将收到通知。如果请求获得批准,儿童即可查看并回复相关消息。

    • 10:27 - 保障儿童安全的更多方式
    • 我们推出了多项新的 API 和框架,通过检测直播中的裸露内容、验证用户年龄和启用家长控制功能,进一步提升儿童使用 App 的安全性。确定用户年龄、调整 App UI 并实施 PermissionKit,为儿童打造适合其年龄且安全的使用体验。

Developer Footer

  • 视频
  • WWDC25
  • 使用 PermissionKit 增强儿童安全保护
  • 打开菜单 关闭菜单
    • 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. 保留所有权利。
    使用条款 隐私政策 协议和准则