我正在为iOS和iPadOS开发一个iOS应用程序来控制我的HomeKit智能设备,特别是一个RGB引导的条条。我已经下载了附件模拟器,我已经创建了两个配件,名为“插头”和"Led地带“。我正在跟踪这份正式文件,并且能够使用以下代码创建和删除新的家园:
class HomeStore: NSObject {
static var shared = HomeStore()
let homeManager = HMHomeManager()
var homeDelegates = Set<NSObject>()
var accessoryDelegates = Set<NSObject>()
}
extension HomeStore: HMHomeManagerDelegate {
func addHome(name: String) {
homeManager.addHome(withName: name, completionHandler: { (home, error) in
if let error = error {
print("Error while adding a new home named \(name): \(error.localizedDescription)")
}
})
}
func removeHome(homeName: String) {
homeManager.homes.forEach({ home in
if (home.name == homeName) {
homeManager.removeHome(home, completionHandler: { error in
if let error = error {
print("Error while removing home named \(homeName): \(error.localizedDescription)")
}
})
}
})
}我创建了另一个函数来搜索新的附件:
func searchAccessories() -> [HMAccessory] {
accessoryBrowser.startSearchingForNewAccessories()
accessoryBrowser.stopSearchingForNewAccessories()
return accessoryBrowser.discoveredAccessories
}如果我在上面运行这个函数,它会搜索新的附件,并在这个SwiftUI视图中显示它们:
var body: some View {
Form {
ForEach(homeStore.searchAccessories()) { accessory in
Section {
Text(accessory.name)
Button("Add", action: {
homeStore.addAccessory(accessory: accessory, to: home)
})
}
}
}
}

当我按下“添加”按钮时,它运行以下函数:
func addAccessory(home: HMHome, accessory: HMAccessory) {
home.addAccessory(accessory, completionHandler: { error in
if let error = error {
print("Error while adding a new accessory named \(accessory.name) to home \(home.name): \(error.localizedDescription)")
}
})
}但它给了我以下错误:
Error while adding a new accessory named Led Strip to home Casa: Object not found.我还尝试手动添加HomeKit-URL (类型为X://ect.)具有以下职能:
func addAccessory(name: String, to home: HMHome, to room: HMRoom, url: URL) {
let request = HMAccessorySetupRequest()
request.suggestedAccessoryName = name
request.homeUniqueIdentifier = home.uniqueIdentifier
request.suggestedRoomUniqueIdentifier = room.uniqueIdentifier
request.payload = HMAccessorySetupPayload(url: url)
let setupManager = HMAccessorySetupManager()
setupManager.performAccessorySetup(using: request, completionHandler: { result, error in
if let error = error {
print("Error while adding accessory named \(name) to home \(home.name), room \(room.name): \(error.localizedDescription)")
}
})
}但是它给了我错误17:操作权限不足。
发布于 2022-09-03 15:31:19
所以这可能是因为你还没有下载HomeKit Simulator --关于如何做到这一点,有一个苹果文档这里。它在本质上帮助开发和测试HomeKit附件。
https://stackoverflow.com/questions/73593360
复制相似问题