HomeKit 是一个用于控制智能家居配件并接入 Matter 设备的开发技能,目标平台为 Swift 6.3 / iOS 26+。它主要围绕两个框架展开:HomeKit 负责家庭/房间/配件模型、动作集与触发器;MatterSupport 负责将 Matter 设备配网到你的生态系统中。
用途 该技能适用于在 iOS 应用中管理家庭自动化场景,包括管理家庭、房间与配件,创建动作集(场景)与触发器,以及将 Matter 设备接入自有生态。
主要能力
- HomeKit 数据模型:以 HMHomeManager 为根,向下组织为 HMHome、HMRoom、HMAccessory、HMService、HMCharacteristic,并包含 HMZone、HMActionSet、HMTrigger。
- 配件管理:通过系统 UI 发现并添加配件(addAndSetupAccessories),列出配件与服务,将配件分配到房间(assignAccessory)。
- 特征读写:读取与写入特征值(readValue / writeValue),并通过 enableNotification 与 HMAccessoryDelegate 观察实时变化。
- 动作集与触发器:创建 HMActionSet 组合多个特征写入并一起执行;创建 HMTimerTrigger(定时)与 HMEventTrigger(事件,如运动传感器触发)。
- Matter 配网:使用 MatterAddDeviceRequest 将 Matter 设备配网到自有生态,支持按厂商 ID、产品 ID 等条件过滤设备,并可组合多个条件。
- Matter 扩展处理:通过 MatterAddDeviceExtensionRequestHandler 实现 validateDeviceCredential、rooms、configureDevice、commissionDevice 等回调。
使用方式
- HomeKit 配置:在 Xcode 的 Signing & Capabilities 中启用 HomeKit 能力,并在 Info.plist 中添加 NSHomeKitUsageDescription。
- MatterSupport 配置:启用 MatterSupport 能力,添加 MatterSupport Extension target;若应用直接提供配网码,需添加 com.apple.developer.matter.allow-setup-payload 权限。
- 初始化:创建单个 HMHomeManager 并实现 HMHomeManagerDelegate,在 homeManagerDidUpdateHomes 回调触发后再访问 homes(HomeKit 异步加载)。
- 授权:通过 delegate 的 didUpdate status 检查 HMHomeManagerAuthorizationStatus。
- 配网:调用 MatterAddDeviceRequest.isSupported 检查支持情况,构造 Topology 与请求后执行 perform() 呈现系统配对 UI。
适用场景 适用于需要在 iOS 应用中构建智能家居控制功能、管理家庭与房间结构、创建自动化场景与触发器,以及将 Matter 设备接入自有生态系统的开发场景。
限制与注意事项
- 必须在 delegate 回调触发后才能访问 homes,否则数组为空。
- 不要混淆 HomeKit 配件设置与 Matter 配网:Matter 生态配网应使用 MatterAddDeviceRequest,而非 addAndSetupAccessories。
- 不要遗漏所需权限(entitlements),否则会引发运行时错误。
- 不要创建多个 HMHomeManager 实例,应使用单一共享实例。
- 写入特征前应检查 metadata(如最大值),避免写入超出范围的值。
- 所有完成回调中应处理错误。
- 触发器创建后需调用 enable(true) 启用。
- 建议在发布前使用 HomeKit Accessory Simulator 测试动作集。
该技能还提供了常见错误示例与审查清单,以及扩展模式参考(Matter 扩展、delegate 连接、SwiftUI)。