大多数浏览器和
Developer App 均支持流媒体播放。
-
在您的智能家居 App 中添加对 Matter 的支持
借助 HomeKit 中得到增强的全新 API,智能家居的开发者将能以最简便的方式实现与全新 Matter 协议的整合。了解 Matter 协议,探索如何在我们的平台和您的智能家居 app 中设置和管理 Matter 配件。
资源
-
下载
哈啰大家! 欢迎来到WWDC21会话 “为你的智能家庭应用程序 新增Matter支持” 我是家庭工程部的赛琳娜 今天 我的同事克里斯、萨加和我 会带你看我们今年为Matter支持 新增令人兴奋的功能 在星期一的简报中有提到 Matter是由Apple和其他业界领袖 为智能家庭配件开发的新标准 来确保所有智能家庭配件 无缝协作 它的目标是要民众化 全世界的家庭自动化 让人们能开始打造智能家庭 并在未来几年持续增加智能家庭 Matter协定是以开源 方式开发 使用已实现的技术 包括HomeKit 确保它能支持最广范围的 智能家庭设备 让制造商能更轻松的开始 整合进它们的产品中 使用Matter 智能家庭配件制造商 不再需要同时支持多种协议 彻底简单化产品 及其持续支持的开发投入 也让应用程序开发者有机会 专注为用户 开发最佳体验的应用程序 省去创建并维护 私有协议的负担 通过为配件创造如此统一的协议 用户可以轻松地享受智能家庭的便利 且更有信心地将产品带进他们的家中 知道它们能交互使用 让人们能从商店 选择更多种配件 而各地的建造者将能用标准方式 安装在家中 受到这些鼓舞 我们希望开发者 能尽快用Matter 在你的配件和应用程序开发上 很高兴地告诉你 iOS、iPadOS 和tvOS 15的开发者检视即将 可以支持Matter 很多很棒的功能 我们今天想向你介绍 事不宜迟 我们来聊你能如何 通过HomeKit整合Matter配件 今天 配件要套用HomeKit配件协议 通过HomeKit框架整合了 Apple Home 过去几年间 我们在HomeKit 打造了很棒的功能 提供HAP配件的 全面控制和管理 当我们看到Matter配件 与Apple Home的整合 我们自然断定 拓展HomeKit框架的责任 来支持Matter作为平行协议 建筑上 这代表HomeKit呼叫 执行开源Matter 也就是CHIP框架 为了跟Matter配件沟通 补充说明 早期Matter项目的名称 通过网际协议连结家庭 简称CHIP 因为如此 贯穿今天的话题 你仍会看到CHIP出现 在开源专案和API当中 我们预计在接下来的发行中 更新API命名 回到主题 HomwKit提供的封装 让所有既存的Apple Home功能开始 能与Matter配件无缝 立刻地协作 例如 使用与HAP配件设定 相同的流程 来设定Matter配件 在控制中心控制Matter配件 只需要往下一滑 优秀的Siri免持整合 在Matter配件状态 并在你所有的Apple设备上控制 但HomeKit的责任 不只是支持第一方功能 事实上从最一开始 我们就有个远见 让应用程序开发者能利用HomeKit 来打造创意 又令人愉快的 智能家庭应用程序 给他们的用户 省去套用沟通协议 在配件上的负担 在Matter配件也持续如此 沿用你已在HomeKit使用的既存API 这些都能在Matter配件上使用 不用改变代码 我们用设定配件举例 这段代码展示你今天能如何呼叫 新增设定配件API在你的HomeKit 应用程序 有了iOS 15开发者检视 你用这个API触发的QR码扫瞄器 不只能辨识HAP的QR码 也开始能辨识Matter的QR码 为你的用户提供熟悉 且连贯的配件设定体验 有趣的是 你们若有人特别留意今年 Swift的更新就会知道 Swift并发世界有个转变正在发生 我们很开心让你知道 你习惯用的 相同API 现在可以通过 新Swift async/await模型触发 不只是设定 在iOS 15开发者检视 你将能用现有的HomeKit API 读写Matter配件状态 此外 你能自动远程访问 Matter配件 并收到实时通知 还能新增编辑Matter配件 使用窗口和自动化API 全都跟HAP配件的使用方式一样
我们也来窥探进未来 Matter项目持续开发的过程中 我们期待 能支持更多类别的配件 我们会持续整合 这些新Matter配件类别进HomeKit 让开发者使用时更不费力 第二 HAP这个协议支持自定义特性 让制造商打造有创意的特制功能 通过HomeKit使用他们的配件 Matter这个协议也支持特制功能 我们希望通过整合 让你能用HomeKit框架使用 Matter特制功能 这个功能会在后续更新中 请持续关注 并让我们知道你的想法 简而言之 我们致力于 完美整合Matter与HomeKit 不论你是配件开发者 HomeKit应用程序开发者 还是HomeKit用户 请放心 Matter都能直接套用 当你用HomeKit整合 Matter配件 能用像是安全远程控制 自动化等免费功能 多亏HomePod和AppleTV这些 Apple 智能家庭中心的力量和智慧 但若你也需要帮助你的用户 连结Matter配件到其他家中的 智能家庭中心 我们也让你能轻松地 从iOS应用程序操作 接着 我要交给克里斯来向你们 说明更多 谢谢你 赛琳娜 今年的开发者检视 我们打造了全新又概念上熟悉的 设置API 让你能建立直接连线在 Matter配件和家庭中心之间 我们从探索用户体验开始 这里可见到这个流程与我们今天设置 Apple产品和HomeKit配件 非常相似 我们知道用户熟悉这个流程 我们知道他们爱用 也希望 你从中受益 需要强调的是 虽然这是系统UI 用户所选的家庭和房间 是从你的应用程序发布 你的应用程序有责任完成必要的作业 提供被请求的信息 来设定 通过新应用程序扩充类型 我们为你一步步拆解说明 在开始设置前 你的应用程序 创造一个拓扑学对象 代表它管理的家庭 接着传送这个拓扑学对象 给新设置API 此时 设置已经启动且预备好 扫描Matter QR码 这是调用的范例代码 由此可见 这个API概念上与现有的 HomeKit API配件设置非常相似 最大的改变是新增了 HMCHIP服务拓扑学对象 用来通知你的应用程序 所管理的家庭设定 当用户用扫瞄器扫描Matter QR码 设置会自动推进至“已感应”卡片 显示配件感应到的类别 用户现在可看到新增 配件到你的应用程序的选项 在这个范例中 AutoHome 一旦用户选择连接配件 至你的家庭中心 他们可能需要指明 要加哪个家 我们在你启动设置时 当有超过一个 家庭组成拓扑学 会呈现这个屏幕 假如你的拓扑学只有含一个家庭 会跳过这张卡 因为用户的意图 已经很清楚 一旦用户选了一个家庭 iOS传送请求给你的扩充 要求 与扫描配件的Matter负载配对 你的扩充通过它主要的 HMCHIP服务请求处理程序子类别 响应这个要求 被呼叫时 用CHIP框架API创造 Matter配件和你的家庭中心之间 安全的配对 接着 iOS会要求来自你的扩充的 房间清单 与已选定的 家庭对应 这些房间在UI中呈现 供用户选择 你的扩充回应这个请求的 代码很直觉 就像配对请求 围绕着 你的扩充的主要 HMCHIP服务请求处理程序子类别 只要执行这个函式并回传 符合用户选择家庭的对应房间 一旦用户为他们的配件 选了名字和房间 我们提供这个信息 给你的扩充 并要求配置配件 就像其他请求类型 你的扩充 会用CHIP框架API 响应配置请求 直接配置配件 最后 配件完全为你的应用程序 配置好后 用户也会有机会 用Apple Home应用程序 控制中心 和Siri控制这个配件 在它的总体这里搜集的是我们 希望你的扩充套用的代码 三个简单函式 房间请求 配对配件请求 和配件配置请求 一旦你将HMCHIP服务请求处理程序 列为子类别 并覆盖这些方法 剩下的设置体验 对开发者来说就不存在了 像是UI展示 步骤切换、异常处理等 都为你处理完成 这大幅减少你需要 写的代码量 同时 提供用户绝佳头等体验 目前为止 我们聊到你能如何用现有 HomeKit API整合Matter配件 以及新API 假如你需要连结 Matter配件到另个智慧家庭中心 如果你是Matter配件开发者 你会因韧体开发 需要熟悉协议 接着 我的同事萨加会带我们 说明Matter协定 告诉你 Matter和HAP的相同处
谢谢 克里斯 我们从Matter数据模型开始 每个Matter配件通过Matter数据模型 显露它的性能 我们可以分别说明它们的性能 从最上方的端点开始 端点也被认为是配件逻辑上 分开的功能 大部分配件只会有几个端点 其一让你们知道 像“名字”、“商家” 和“模型” 和其他配件的主要函式 像灯光 每个端点能有多个聚落在其中 每个聚落代表一个该端点的 特定特性 以我们的灯光为例 它的灯光端点 可能有亮度 颜色和力量控制聚落 对熟悉HomeKit的人来说 聚落可以想成与HomeKit服务相同
再来 我们看看聚落中有什么 聚落能有一或多个属性 每个属性代表配件的一些状态 以我们的灯光为例 灯光的亮度聚落 会有让我们读 和控制灯光亮度的属性 一样地 Matter属性可以想成 和HomeKit特色相同
最后 这里你能看到每个属性 支持一系列 动作 从读、写到回报 在我们的灯光案例中 我们可能想回报启用 开关聚落 接收来自开关聚落的通知 配件 在每次灯光打开或关闭 Matter通常提供广泛API选择 配置 并与每个属性互动 基于它的函式
这些我们说到的概念 会应用在开源CHIP框架 其中Apple是重要的贡献者之一 如同赛琳娜刚所提 CHIP已经重新命名为Matter 框架和代码会在 未来更新 全面核准版的CHIP框架 会在iOS发行 让HomeKit能与 Matter配件整合 也提供开源API的使用 如果你的应用程序需要使用 我们来看一个使用CHIP框架 和灯光配件互动的案例 练习我们刚说明过的 Matter数据模型核心概念 我们从存取共享的CHIP控制器开始 这个控制器是我们处理对Matter的 主要控制代码 接着 我们用配对时指定的装置ID 取得Light的控制代码 再来 我们初始化控制代码 到开关聚落 在灯光端点上 现在 有了开关聚落 我们能在开关属性上执行读和写 首先 我们请求切换开关属性 它会切换灯光的状态 接着 我们请求读取开关属性的状态 配件就会传送带有状态的属性响应 我们能拿来更新应用程序
这是CHIP框架的快速展示 在我们总结今天的会话前 我想说明一个Matter带来的新概念 并展示一些我们已经在 Home应用程序推出的新功能 来利用它 你可能已经知道 Matter协议 让多个管理员同时 连接配件 这是提供用户选择很棒的功能 但这产生了一些挑战 在配件管理上 我们来看Home应用程序如何纳入此 Home应用程序现在能呈现 配件的所有已连接管理员清单 在新的“已连接服务”区块 用户也有管理已连接管理员的选择 最后 用户有 再次开启配对模式 允许新管理员和配件连接的选择 我们的目标很单纯 我们想确保 用户拥有选择 对他们最好的自由 也能自信地知道 他们的智能家庭配件是如何被管理
Matter会先在iOS、iPadOS 和tvOS 15开发者检视支持 开发者数据必须在这些平台 安装才能启用 你也会需要家庭中心通过HomeKit 控制Matter配件 虽然我们预期Matter发布核可的 商家ID和认证产品ID 一旦它们 准备好销售 我们会提供 范例商店ID和产品ID 在开发者检视 帮助你开发 这些ID预配置为 重现已经在开发者检视 支持的Matter配件类别 一如往常 你可以在 developer.apple.com 找到更多API的信息 更多关于Matter开源API的信息 和Matter配件定义可以在Github找到
总结来说 我们带来通过HomeKit 完美的Matter支持给配件开发者 HomeKit应用程序和HomeKit用户 接下来的种子会有全新设置API 给需要连接Matter配件 和其他智能家庭中心的开发者 而这些所有都将能够 在iOS、iPasOS和tvOS 15 开发者检视使用
我代表我的团队感谢你的收看 再见 [音乐]
-
-
4:58 - Add a Matter accessory to your HomeKit app
home.addAndSetupAccessories() { error in if let error = error { print("Error occurred in accessory setup \(error)”) } else { print("Successfully added accessory to HomeKit") } }
-
9:12 - Invocation example
let homes = proprietaryHomeStorage.homes.map { home in HMCHIPServiceHome(uuid: home.uuid, name: home.name) } let topology = HMCHIPServiceTopology(homes: homes) let setupManager = HMAccessorySetupManager() do { try await setupManager.addAndSetUpAccessories(for: topology) print("Successfully added accessory to my app”) } catch { print("Error occurred in accessory setup \(error)") }
-
10:15 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func pairAccessory(in: HMCHIPServiceHome, onboardingPayload: String) async throws -> Void { // iOS is instructing the extension to pair the accessory via CHIP.framework } // . . . }
-
10:39 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func rooms(in: HMCHIPServiceHome) async throws -> [HMCHIPServiceRoom] { // iOS is querying for a room list that corresponds to the given home } // . . . }
-
11:03 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func configureAccessory(named accessoryName: String, room accessoryRoom: HMCHIPServiceRoom) async throws -> Void { // iOS is instructing the extension to apply configuration via CHIP.framework. } // . . . }
-
11:27 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { override func rooms(in: HMCHIPServiceHome) async throws -> [HMCHIPServiceRoom] { // iOS is querying for rooms that match the given home. These rooms will be shown in system UI and the selection will be vended back to your extension's `configureAccessory` function } override func pairAccessory(in: HMCHIPServiceHome, onboardingPayload: String) async throws -> Void { // iOS is instructing the extension to pair the accessory via CHIP.framework } override func configureAccessory(named accessoryName: String, room accessoryRoom: HMCHIPServiceRoom) async throws -> Void { // iOS is instructing the extension to apply configuration via CHIP.framework. } }
-
14:27 - Status and Control
let controller = CHIPDeviceController.shared() do { let device = try controller.getPairedDevice(accessoryDeviceID) let onOffCluster = CHIPOnOff(device: device, endpoint: lightEndpoint, queue: DispatchQueue.main) onOffCluster?.toggle({ (error, values) in // Error handling code here }) onOffCluster?.readAttributeOnOff(responseHandler: { error, response in if let state = response?[VALUE_KEY] as? NSInteger { updateLightState(state: state) } }) } catch { print("Error occurred in accessory control \(error)") }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。