我有一个使用HomeKit的iOS应用程序,我需要检查应用程序是否可以访问HomeKit Store。正如我注意到的那样,无论如何都会调用homeManagerDidUpdateHomes
。如何检查HomeKit商店许可?
答案 0 :(得分:2)
Swift 4.2 版本的Volodymyr的黑客/答案。
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")
}
}
}
}
答案 1 :(得分:1)
我有一个针对这个问题的黑客攻击,这对我有用:
Init 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
答案 2 :(得分:0)
编辑:这显然不再适用了。不幸的是,我不再进行香港的发展了。有关一些信息,请参阅下面的@ windwalker评论。
[[HMHomeManager alloc] init]
如果您无法访问家庭,将返回nil。其他HomeKit inits也将返回nil,这只是我检查的那个,因为它是我们在应用加载后首先尝试的。