創(chuàng)建 home 的用戶是該 home 的管理員,可以執(zhí)行所有操作,包括添加一個客人用戶到 home。任何管理員添加到這個 home 的用戶(HMUser)都有一個有限的權(quán)限??腿瞬荒芨募彝サ牟季?,但是可以執(zhí)行下面的動作:
比如,一個家庭的戶主可以創(chuàng)建一個 home 布局并向其中添加家庭成員。每個家庭成員必須擁有一個 iOS 設(shè)備和 Apple ID 以及相關(guān)的 iCloud 賬戶。iCloud 需要個人輸入的 Apple ID 和戶主提供的 Apple ID 相吻合,以便讓他們訪問這個 home??紤]到隱私問題,Apple ID 對你的 App 是不可見的。
管理員需要遵從以下步驟來添加一個客人到 home 中:
管理員調(diào)用一個動作將客人添加到home中。
你的App調(diào)用addUserWithCompletionHandler:異步方法。
HomeKit展示一個對話框,要求輸入客人的Apple ID。
用戶輸入客人的Apple ID。
在完成回調(diào)中返回一個新的用戶。
添加一個客人到home,需要在客人的iOS設(shè)備上做以下操作:
用戶在iCloud偏好設(shè)置中輸入iCloud憑證(Apple ID和密碼)。
用戶啟動你的App。
你的App通過home manager object獲得一個home集合。
客人執(zhí)行的操作可能會失敗。如果一個異步方法中出現(xiàn) HMErrorCodeInsufficientPrivileges 錯誤碼的話,這就意味著用戶沒有足夠的權(quán)限來執(zhí)行動作-也許這個用戶只是客人,而不是管理員。
為了測試你的 App 是否正確處理了客人用戶,請閱讀Testting Multiple iOS Devices and Users。
為了添加一個客人用戶到home,請使用addUserWithCompletionHandler:異步方法。
[self.home addUserWithCompletionHandler:^(HMUser *user, NSError *error) {
if (error == nil) {
// Successfully added a user
}
else {
// Unable to add a user
} }];
想要移除 home 中的用戶,請使用 HMHome 類的 removeUser:completionHandler:方法。
通過實現(xiàn) HMHomeDelegate 協(xié)議中的 home:didAddUser:和 home:didRemoveUser:協(xié)議方法檢查新添加和移除的用戶并更新視圖。關(guān)于如何創(chuàng)建一個delegate,請閱讀Observing Changes to Individual Homes。
出于隱私的考慮,你的 App 對用戶名只有讀得權(quán)限,并不能讀寫用戶的 Apple ID。使用 HMHome 對象的 users 屬性來獲取用戶。使用 HMUser 類的 name 屬性來獲取用戶名。
更多建議: