在我的iOS应用程序中,当我从手机中删除应用程序并重建它时,当我启动它时,应用程序因尝试访问我已设置的HMHomeManager变量而崩溃,然后请求获得HomeKit访问权限。< / p>
我有什么办法让应用程序请求HomeKit的权限,在崩溃之前?
我尝试将其放入我的appDelegate
文件中。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
//push notifications
registerPushNotifications()
let home = HMHomeManager()
home.accessibilityActivate()
return true
}
但它没有用。 谢谢你的帮助!
编辑:
这是崩溃的代码,在第一个视图控制器加载时会调用它。
//adding the accessories
func addAcessories() {
for accessory in (homeManager.primaryHome?.accessories)! { // <-- crashes right here
if accessory.isBridged == true {
devices.append(accessory)
print(accessory.name)
}
}
print("")
}
编辑:
当它崩溃时,它会在控制台中显示(lldb)
,在文本编辑器中显示Thread 1: EXC_BREAKPOINT
。
我也尝试将其放入我的appDelegate
文件中。
我已经尝试让appDelegate符合HMHomeManagerDelegate
class AppDelegate: UIResponder, UIApplicationDelegate, HMHomeDelegate, HMHomeManagerDelegate {
并在我的ApplicationDidFinishLoadingWithOptions
方法中调用此内容。
let home = HMHomeManager()
home.accessibilityActivate()
home.delegate = self
homeKit.addAcessories()
homeKit.addCharacteristics()
return true
答案 0 :(得分:1)
您必须将NSHomeKitUsageDescription
添加到info.plist
以防止崩溃。
这将自动请求许可。此外,您还必须为iOS 10添加说明。您可以说&#34;(APP NAME)需要访问家庭套件&#34;但你可以随心所欲地做到这一点。
编辑:尝试从appDelegate中删除HomeKit代码