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

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

使用 PermissionKit 强化儿童安全保护

引言

在数字时代,儿童网络安全成为家长和开发者共同关注的焦点。苹果在 iOS、iPadOS 和 macOS 26 系统中推出的 PermissionKit 框架,为开发者提供了一套完整的解决方案,让应用能够更好地保护儿童通信安全。本文将详细介绍 PermissionKit 的核心功能、技术实现方式以及最佳实践。

PermissionKit 概述

PermissionKit 是苹果最新推出的框架,旨在为请求者与权限管理者之间创造快速、一致且一流的权限体验。该框架特别适合用于儿童与父母间的通信权限管理,通过”信息”应用作为沟通桥梁,让儿童能够安全地向家长申请与新联系人的交流权限。

前提条件

使用 PermissionKit 前需注意以下几点:

  • 用户必须加入”家人共享”群组
  • 家长或监护人需为儿童启用”通信限制”功能
  • 应用需具备判断用户年龄或年龄段的能力

为儿童定制安全界面

对于儿童用户,应用应谨慎展示未知联系人的内容。通过 CommunicationLimits 单例的 knownHandles(in:) 方法,可以高效查询系统已知的联系人:

import PermissionKit

let knownHandles = await CommunicationLimits.current.knownHandles(in: conversation.participants)

if knownHandles.isSuperset(of: conversation.participants) {
    // 显示内容
} else {
    // 隐藏内容
}

该方法对输入的句柄集合执行优化查询,返回系统已知的子集,开发者无需重复构建已有数据。

构建权限请求流程

PermissionKit 使用”问题”抽象层封装权限请求的细节。开发者需要构建 PermissionQuestion 对象,包含通信主题和相关信息。

创建基本问题

import PermissionKit

var question = PermissionQuestion(handles: [
    CommunicationHandle(value: "dragonslayer42", kind: .custom),
    CommunicationHandle(value: "progamer67", kind: .custom)
])

添加元数据增强决策信息

为帮助家长做出更明智的决定,可以为问题添加更多元数据:

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)

在不同框架中发起请求

在 SwiftUI 中使用 CommunicationLimitsButton

import PermissionKit
import SwiftUI

struct ContentView: View {
    let question: PermissionQuestion<CommunicationTopic>

    var body: some View {
        // ...
        CommunicationLimitsButton(question: question) {
            Label("请求权限", systemImage: "paperplane")
        }
    }
}

在 UIKit 中:

import PermissionKit
import UIKit

try await CommunicationLimits.current.ask(question, in: viewController)

在 AppKit 中:

import PermissionKit
import AppKit

try await CommunicationLimits.current.ask(question, in: window)

处理家长反馈

家长在”信息”中做出回应后,应用需要在后台处理这些反馈:

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 {
                // 收到反馈!
                self.isShowingResponseAlert = true
            }
        }
    }
}

完整工作流程

  1. 儿童在应用中尝试与未知联系人通信
  2. 应用隐藏敏感内容并显示权限请求按钮
  3. 儿童发起请求,系统生成”信息”对话
  4. 家长在”信息”中查看请求详情并做出决策
  5. 决策结果自动同步回应用,更新儿童界面

其他儿童保护方案

除 PermissionKit 外,苹果还提供多种儿童保护技术:

  • Sensitive Content Analysis API:检测视频通话中的裸露内容
  • Declared Age Range API:获取用户年龄段信息
  • Screen Time 框架:家长监管工具
  • Family Controls 框架:应用级家长控制

结论

PermissionKit 为开发者提供了一套完整的儿童通信安全解决方案,通过系统级集成简化了复杂的权限管理流程。开发者只需遵循框架提供的API,就能轻松构建符合儿童安全标准的通信功能。随着数字安全意识的提升,集成此类保护机制将成为儿童友好型应用的必备功能。

相关视频

在你的 App 中提供适龄体验

文档

DeclaredAgeRange
PermissionKit