首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“操作已被取消”,同时在HomeKit应用程序中添加了新的附件

“操作已被取消”,同时在HomeKit应用程序中添加了新的附件
EN

Stack Overflow用户
提问于 2022-09-03 15:22:26
回答 1查看 88关注 0票数 1

我正在为iOS和iPadOS开发一个iOS应用程序来控制我的HomeKit智能设备,特别是一个RGB引导的条条。我已经下载了附件模拟器,我已经创建了两个配件,名为“插头”和"Led地带“。我正在跟踪这份正式文件,并且能够使用以下代码创建和删除新的家园:

代码语言:javascript
复制
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)")
                }
            })
        }
    })
}

我创建了另一个函数来搜索新的附件:

代码语言:javascript
复制
func searchAccessories() -> [HMAccessory] {
    accessoryBrowser.startSearchingForNewAccessories()
    accessoryBrowser.stopSearchingForNewAccessories()
    return accessoryBrowser.discoveredAccessories
}

如果我在上面运行这个函数,它会搜索新的附件,并在这个SwiftUI视图中显示它们:

代码语言:javascript
复制
var body: some View {
    Form {
        ForEach(homeStore.searchAccessories()) { accessory in
            Section {
                Text(accessory.name)
                Button("Add", action: {
                    homeStore.addAccessory(accessory: accessory, to: home)
                })
            }
        }
    }
}

当我按下“添加”按钮时,它运行以下函数:

代码语言:javascript
复制
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)")
        }
    })
}

但它给了我以下错误:

代码语言:javascript
复制
Error while adding a new accessory named Led Strip to home Casa: Object not found.

我还尝试手动添加HomeKit-URL (类型为X://ect.)具有以下职能:

代码语言:javascript
复制
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:操作权限不足。

EN

回答 1

Stack Overflow用户

发布于 2022-09-03 15:31:19

所以这可能是因为你还没有下载HomeKit Simulator --关于如何做到这一点,有一个苹果文档这里。它在本质上帮助开发和测试HomeKit附件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73593360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档