SuperAPI AI 工具集

permissionkit

编程与开发

查看项目

更新于 10-16 09:12

技能介绍

PermissionKit 是 iOS 26 中新增的系统框架,用于创建儿童通信安全体验。它让儿童可以就家长设置的通信限制向家长或监护人申请例外,由家长审核后批准或拒绝。该框架面向 Swift 6.3 / iOS 26+,平台可用性为 iOS 26+、iPadOS 26+、macOS 26+。资料提示 PermissionKit 较新,方法签名应以最新 Xcode 26 beta SDK 为准。

用途 PermissionKit 管理一条完整的权限流程:儿童在应用中遇到通信限制;应用创建 PermissionQuestion 描述请求;系统将问题呈现给儿童,由其发送给家长;家长审核并批准或拒绝;应用收到包含家长决定的 PermissionResponse。

主要能力 框架提供以下关键类型:AskCenter 是管理权限请求与响应的单例;PermissionQuestion 描述所请求的权限;PermissionResponse 表示家长的决定;PermissionChoice 表示具体答案(批准/拒绝);PermissionButton 是触发权限流程的 SwiftUI 按钮;CommunicationTopic 用于通信相关权限请求;CommunicationHandle 表示电话号码、邮箱或自定义标识;CommunicationLimits 用于检查通信限制是否适用;SignificantAppUpdateTopic 用于重大应用更新权限请求。

使用方式 首先导入 PermissionKit,无需特殊授权。在发起请求前,可通过 CommunicationLimits.current 检查通信限制是否启用以及某个 handle 是否为已知联系人,也可批量筛选已知 handle。创建 CommunicationHandle 时需指定 value 与 kind(.phoneNumber、.emailAddress 或 .custom)。随后构建 PermissionQuestion,可针对单个或多个联系人;使用 CommunicationTopic 时可提供 PersonInformation(包含 handle、nameComponents、avatarImage)以及 actions(如 .message、.audioCall、.videoCall、.call、.chat、.follow、.beFollowed、.friend、.connect、.communicate)。通过 AskCenter.shared.ask(question, in:) 呈现请求,并需处理 AskError 的各类情况:communicationLimitsNotEnabled、contactSyncNotSetup、invalidQuestion、notAvailable、systemError、unknown。SwiftUI 中可使用 PermissionButton(question:) 触发流程。应用应通过 AskCenter.shared.responses(for:) 异步监听家长决定,根据 PermissionChoice.answer 的 .approval 或 .denial 更新界面。SignificantAppUpdateTopic 可用于需要家长批准的重大应用更新请求。

适用场景 适用于涉及儿童通信的应用,例如在家长设置的通信限制下,让儿童申请与特定联系人发消息、通话、关注或建立连接;也适用于需要家长批准的重大应用更新。

限制与注意事项 资料列出了常见错误:不要跳过通信限制是否启用的检查,否则 ask 会抛出 communicationLimitsNotEnabled;不要忽略 AskError 各分支,应分别处理并给出用户反馈;不要创建空 handle 的问题;不要忘记监听响应;不要使用已废弃的 CommunicationLimitsButton,应改用 PermissionButton。审查清单还建议:确保 AskError 各情况有回退与提示、CommunicationHandle 的 Kind 正确、问题至少包含一个 handle 或人员信息、监听响应、使用 PermissionButton、人员信息包含姓名组件、通信动作与应用实际能力匹配、响应处理在主 actor 更新 UI、错误状态提供清晰指引。