在我的iOS应用程序中,当我从手机上删除该应用程序并重建应用程序时,启动应用程序时,应用程序会从尝试访问我设置的HMHomeManager变量,然后要求获得HomeKit访问权限。
我有什么可以做的事情来让应用程序要求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
您必须将NSHomeKitUsageDescription
添加到info.plist
中以防止崩溃。
这将自动要求许可。另外,您还必须为其添加描述,就像iOS 10一样。您只能说"(应用程序名称)需要访问家用套件",但是您可以将其做出想要的内容。
编辑:尝试从AppDelegate