HomeKit:检查权限
HomeKit: Check for permission
我有一个使用 HomeKit 的 iOS 应用程序,我需要检查应用程序是否可以访问 HomeKit Store。正如我所注意到的, homeManagerDidUpdateHomes
无论如何都会被调用。如何检查 HomeKit 商店权限?
编辑:这显然不再有效了。不幸的是,我不再做 HK 开发了。有关一些信息,请参阅下面@windwalker 的评论。
[[HMHomeManager alloc] init]
如果您无权访问房屋,return 将为零。其他 HomeKit inits 也将 return nil,这只是我正在检查的一个,因为它是我们在应用程序加载后尝试的第一件事。
我有解决这个问题的技巧,对我有用:
初始化 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
Swift 4.2 版本的 Volodymyr hack/answer.
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")
}
}
}
}
我有一个使用 HomeKit 的 iOS 应用程序,我需要检查应用程序是否可以访问 HomeKit Store。正如我所注意到的, homeManagerDidUpdateHomes
无论如何都会被调用。如何检查 HomeKit 商店权限?
编辑:这显然不再有效了。不幸的是,我不再做 HK 开发了。有关一些信息,请参阅下面@windwalker 的评论。
[[HMHomeManager alloc] init]
如果您无权访问房屋,return 将为零。其他 HomeKit inits 也将 return nil,这只是我正在检查的一个,因为它是我们在应用程序加载后尝试的第一件事。
我有解决这个问题的技巧,对我有用:
初始化 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
Swift 4.2 版本的 Volodymyr hack/answer.
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")
}
}
}
}