4

我有一个使用 HomeKit 的 iOS 应用程序,我需要检查应用程序是否可以访问 HomeKit 商店。正如我所注意到的,homeManagerDidUpdateHomes无论如何都会被调用。如何检查 HomeKit 商店权限?

4

3 回答 3

3

Volodymyr 的 hack/answer的Swift 4.2版本。

import UIKit
import HomeKit

class HomeKitAccessViewController: UIViewController {

    let manager = HMHomeManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.manager.delegate = self

    }

}

extension HomeKitAccessViewController: HMHomeManagerDelegate {

    func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {
        let number = manager.value(forKey: "_didUpdateHomes")

        if let num = number, let boolValue = num as? Bool {
            if boolValue == true {
                print("We got access.")
            }else{
                print("We don't have access")
            }
        }
    }
}
于 2018-01-25T14:28:26.020 回答
2

我有一个解决这个问题的方法,它对我有用:

初始化 HMHomeManager

self.manager = [[HMHomeManager alloc] init];
self.manager.delegate = self;

检查私人财产

-(void)homeManagerDidUpdateHomes:(HMHomeManager *)manager {

  //HACK to check that the application does not have HomeKit permission
  NSNumber *private = [self.manager valueForKey:@"_didUpdateHomes"];


  if (private && ![private boolValue]) {
    //Warning to user
    return; 
  }
  // Do other logic
}

我希望Apple尽快为我们提供API

于 2017-03-06T23:11:29.927 回答
0

编辑:这显然不再起作用了。不幸的是,我不再进行香港开发了。有关一些信息,请参阅下面的 @windwalker 评论。

[[HMHomeManager alloc] init]

如果您无法访问该房屋,则将返回 nil。其他 HomeKit 初始化也将返回 nil,这只是我正在检查的一个,因为它是我们在应用程序加载后尝试的第一件事。

于 2015-07-13T20:51:40.357 回答