我有一个使用 HomeKit 的 iOS 应用程序,我需要检查应用程序是否可以访问 HomeKit 商店。正如我所注意到的,homeManagerDidUpdateHomes
无论如何都会被调用。如何检查 HomeKit 商店权限?
问问题
1466 次
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 回答