iOS開發(fā)基礎之 Home Kit 框架簡介
重要:本文是針對開發(fā)過程中使用的API或者技術的初步文檔。蘋果提供該文檔旨在為開發(fā) 者使用該技術和蘋果產(chǎn)品上的編程接口提供幫助。這些信息可能會發(fā)生變化,依據(jù)該文檔開發(fā)的軟件應該使用***的操作系統(tǒng)軟件和最終文檔進行測試。文檔的新 版本可能會提供新的API和技術。
Home Kit在那些支持蘋果Home Automation Protocol和iOS設備的附屬配件之間實現(xiàn)了無縫集成和融合,從而推進家庭自動化的發(fā)展和革新。通過一個通用的家庭自動化設備協(xié)議,以及一個可以配 置這些設備并與之通信的公開API,Home Kit使得app用戶控制自己的home成為可能,而不需要由生產(chǎn)家庭自動化配件的廠商創(chuàng)建。Home Kit也使得來自多個廠商的家庭自動化配件集成為一體,而無需廠商之間彼此直接協(xié)調。
Home Kit允許第三方應用執(zhí)行以下三大主要功能:
1.發(fā)現(xiàn)附屬設備,并把它們添加到一個持久的、跨設備的home配置數(shù)據(jù)庫中。
2. 在home配置數(shù)據(jù)庫中展示、編輯以及操作數(shù)據(jù)。
3.與配置的附屬設備和服務進行通信,從而使之執(zhí)行相關操作,比如關掉起居室的燈。
Home配置數(shù)據(jù)庫并不僅僅適用于第三方應用,也適用于Siri。用戶可用Siri發(fā)出指令,比如“Siri,關掉起居室的燈。”如果用戶通過合邏輯的分組配件、服務以及命令創(chuàng)建了家居配置,那么Siri可通過聲音控制來完成一系列復雜精細的操作。
Home Kit把home看作一個家庭自動化配件的集合。家居配置的目的是允許終端用戶為他們購買和安裝的家庭自動化配件提供有意義的標簽和分組。應用程序可以提供建議來幫助用戶創(chuàng)建有意義的標簽和分組,但不能把它們自己的偏好設定強加給用戶--用戶的意愿最重要。
基本數(shù)據(jù)包含層級類似下邊這樣:
Homes (HMHome)
Homes(HMHome)是最頂層的容器,展示了用戶一般都會認為是單個家庭單位的結構。用戶可能有多個離得較遠的住所,比如一個經(jīng)常使用的住所和一個度假別墅?;蛘咚麄兛赡苡袃蓚€離得比較近的住所,比如一個主要住宅和一個別墅。
Rooms (HMRoom)
Rooms (HMRoom)是home的可選部分,并且代表home中單獨的room。room并沒有任何物理特性--大小、位置等等。對用戶來說,它們是簡單的有 意義的命名,比如“起居室”或者“廚房”。有意義的room名稱可以啟用類似“Siri,打開起廚房的燈”的指令。
Accessories (HMAccessory)
附屬設備被安裝在home中,并且被分配給每個room。它們是實際的物理家庭自動化設備,比如一個車庫門遙控開關。如果用戶沒有配置任何room,那么Home Kit將會把附屬設備分配給home中特殊的默認room。
Services (HMService)
Services (HMService)是由附屬配件提供的實際服務。附屬配件有用戶可控制的服務,比如燈光;也有它們自用的服務,比如框架更新服務。Home Kit更多關注用戶可以控制的服務。單個附屬配件可能有多個用戶可控制的服務。比如大部分車庫遙控開關有打開或者關閉車庫門的服務,并且在車庫門上還有控 制燈光的服務。
Zones (HMZone)
Zones (HMZone)是home中可選擇的room分組。“Upstairs”和“downstairs”可以由zones代表。Zones是完全可選擇 的,room不需要處于zone中。通過把room添加到zone中,用戶可以給Siri發(fā)命令,比如“Siri,打開樓下所有的燈。”
類
NSObject:NSObject是大部分Objective-C類層次的基類。
HMAccessory:一個HMAccessory對象代表一個家庭自動化配件,比如車庫門遙控開關或者一個恒溫器。
HMAccessoryBrowser:一個HMAccessoryBrowser對象是一個用來發(fā)現(xiàn)新附屬配件的網(wǎng)絡瀏覽器。
HMAction:HMAction是Home Kit中行為操作的抽象基類。
(HMCharacteristicWriteAction:HMCharacteristicMetadata對象用來代表操作集中的一個操作。)
HMActionSet:HMActionSet對象代表應用于單個設置的一組操作(HMAction的實例)
HMCharacteristic:HMCharacteristic對象代表某個服務的特性,比如,燈是打開還是關閉,或者溫度調節(jié)器設定了什么溫度。
HMCharacteristicMetadata:HMCharacteristicMetadata對象代表某個特性的元數(shù)據(jù)。
HMHome:HMHome對象允許你在home中與不同附屬設備進行通信并安裝配件。
HMHomeManager:HMHomeManager對象管理一個或者多個home集合。
HMRoom:一個HMRoom對象被用來代表home中的一個room。
HMService:HMService對象代表附屬配件提供的服務。
HMServiceGroup:HMServiceGroup對象代表配件提供的服務的集合,簡化了把服務當作單一實體處理的過程。
HMTrigger:HMTrigger對象代表觸發(fā)事件,在滿足觸發(fā)條件時,它用來觸發(fā)一個或者多個操作集(HMActionSet的實例)。
(HMTimerTrigger:HMTimerTrigger對象代表基于計時器的觸發(fā)器。)
HMZone:HMZone對象代表一個room的集合--用戶認為是單個區(qū)域或者zone,比如“起居室”和“廚房”可能會被分在一個叫做“Downstairs”的zone中。
Protocols
HMAccessoryBrowserDelegate:該協(xié)議定義了HMAccessoryBrowser對象的接口,以通知委托發(fā)現(xiàn)了新的附屬配件。
HMAccessoryDelegate:該協(xié)議定義了從附屬配件到委托狀態(tài)更新的通信方法。
HMHomeDelegate:該協(xié)議定義了home中配置改變和在home中執(zhí)行操作集的狀態(tài)的通信方法。
HMHomeManagerDelegate:該協(xié)議定義了home manager對象如何把改變傳達給它們的委托。
Other Reference