В моем приложении 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