2017-05-15 15 views
6

Potrzebuję monitować użytkowników o zmianę uprawnień kamery do mojej aplikacji za pośrednictwem kontrolera UIAlertController. Alert posiada następujące działania:Awaria aplikacji w tle podczas zmiany uprawnień - swift

alert.addAction(UIAlertAction(title: "Open Settings", style: .default, handler: { (action) -> Void in 

    guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else { 
     return 
    } 

    if UIApplication.shared.canOpenURL(settingsUrl) { 
     DispatchQueue.main.async(execute: { 
      UIApplication.shared.openURL(settingsUrl) 
     }) 
    } 
})) 

To działa w jakim otwiera ustawienia, ale jeśli użytkownik zmieni pozwolenie aparatu, awarie aplikacji w tle z Message from debugger: Terminated due to signal 9.

Mogą teraz otwierać aplikację, a zgoda jest prawidłowa, ale muszą zaczynać się od początku. Czy ktoś wie, jak rozwiązać ten problem?

+0

czy to się dzieje w urządzeniu? – KKRocks

+0

http://stackoverflow.com/questions/26115265/app-crashes-on-enabling-camera-access-od-settings-ios-8 –

+0

@KKRocks To jest na prawdziwym urządzeniu, tak. – James

Odpowiedz

10

Twoja aplikacja nie załamuje się po prostu zmuszona do ponownego uruchomienia przez iOS z nowymi ustawieniami prywatności. Tak więc, po zmianie uprawnienia kamery, oznacza to zmianę polityki prywatności, więc aplikacja zostanie zabita, jeśli zostanie dołączona do debuggera, a następnie uruchomi się ponownie.

Ponadto, nie tylko uprawnienia do kamery Jeśli użytkownik w pewnym momencie zmieni książkę adresową, kalendarze, przypomnienia, aparat fotograficzny lub zdjęcia, system iOS SIGKILL aplikacji. (domyślne zachowanie iOS)

+0

To chyba wszystko. Dzięki za informację. – James

+0

Właśnie dodałem exit (0), gdy otworzyłem ustawienia kamery. Działa dobrze – HariKarthick

+0

Podczas korzystania z bocznego obciążenia podłączonego do systemu Xcode: 1 aplikacja uruchamia się ponownie 2- sygnał 9 jest zalogowany w debugerze 3- Xcode jest odłączony (zakładam, urządzenie restartuje proces) – benc