首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用HomeKit accessoryDidUpdateServices

未调用HomeKit accessoryDidUpdateServices
EN

Stack Overflow用户
提问于 2019-02-28 02:39:59
回答 2查看 178关注 0票数 0

在下面的快速测试应用程序中,我尝试使用accessoryDidUpdateServices()接收来自色调运动检测器附件的光照级别更新。但是,委托函数永远不会调用。我在安装了iOS 12.1.4的iPhone上运行它。

谁能解释一下我做错了什么,以及我需要做些什么来正确处理HMService更新?

代码语言:javascript
复制
import HomeKit

public class ViewController: UIViewController, HMHomeManagerDelegate, HMAccessoryDelegate {

    var manager: HMHomeManager!

    public override func viewDidLoad() {
        super.viewDidLoad()
        manager = HMHomeManager()
        manager.delegate = self
    }

    public func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {
        let service = manager.primaryHome!.servicesWithTypes([HMServiceTypeLightSensor])!.first!
        service.accessory!.delegate = self
        let characteristic = service.characteristics.filter({ $0.characteristicType == HMCharacteristicTypeCurrentLightLevel }).first!

        Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
            print("Light level: \(characteristic.value!)")
        }
    }

    public func accessoryDidUpdateServices(_ accessory: HMAccessory) {
        print("Service updated: \(accessory.name)")
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-01 01:08:44

问题是我在使用accessoryDidUpdateService时,我应该使用附件:didUpdateValueFor。有了后一个函数,代码就可以按预期运行。

票数 0
EN

Stack Overflow用户

发布于 2019-02-28 12:11:41

我认为你的viewDidLoad中缺少一个addHomes(manager.homes),你需要确保你创建了一个新的主页来添加它,然后你可以添加附件并添加到一个主页中。

我强烈推荐RayWenderlich网站上的这个HomeKit教程:https://www.raywenderlich.com/5313-homekit-tutorial-getting-started

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

https://stackoverflow.com/questions/54912403

复制
相关文章

相似问题

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