(Swift)iOS应用程序在请求HomeKit Access

时间:2016-12-12 23:53:16

标签: ios swift xcode homekit ios-homekit

在我的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

1 个答案:

答案 0 :(得分:1)

您必须将NSHomeKitUsageDescription添加到info.plist以防止崩溃。

这将自动请求许可。此外,您还必须为iOS 10添加说明。您可以说&#34;(APP NAME)需要访问家庭套件&#34;但你可以随心所欲地做到这一点。

编辑:尝试从appDelegate中删除HomeKit代码