SuperAPI AI 工具集

axiom-contacts

编程与开发

查看项目

更新于 10-15 20:11

技能介绍

用途:指导 iOS 应用正确访问通讯录数据,在一次性选择、持久访问与全库读取之间做出权限选择,并实现联系人搜索、选择与同步。

主要能力:梳理四种授权级别(未决定、有限访问、完全访问、拒绝);说明 Contact Access Button(iOS 18+)如何在无需完全授权的情况下按联系人授予访问;介绍 CNContactPickerViewController 的一次性快照用法、contactAccessPicker 批量选择、CNContactStore 全量读写;给出最小化 keysToFetch、增量同步(CNChangeHistoryFetchRequest 与 visitor 模式)以及 Contact Provider 扩展的要点。

使用方式:按决策树选择方案——一次性选择用 CNContactPickerViewController;需要持久访问特定联系人用 ContactAccessButton;批量选择用 contactAccessPicker;核心功能需全库读写才申请完全访问。示例代码展示 ContactAccessButton(queryString:) 的用法与样式定制。

适用场景:读取或写入联系人、申请通讯录权限、实现联系人搜索或选择 UI、迁移到 iOS 18 有限访问、构建 Contact Provider 扩展、实现增量联系人同步。

限制与注意:不适用于日历提醒(用 eventkit)、通用隐私模式(用 privacy-ux)或 SwiftUI 架构。必须指定 keysToFetch,否则访问未获取属性会抛 CNContactPropertyNotFetchedException;CNMutableContact 非线程安全;需在 Info.plist 添加 NSContactsUsageDescription;笔记字段需 com.apple.developer.contacts.notes 权限;变更历史枚举器仅 Objective-C 可用,Swift 需桥接。