2015-09-17 19 views
6

Utworzono funkcję, która ma obsługiwać uprawnienia z lokalizacją, aby aplikacja została zamknięta, jeśli nie ma uprawnień do lokalizacji. Jednak po naciśnięciu otwartych ustawień i naciśnięciu "powrót do aplikacji" na pasku stanu metoda determeinePermission nie jest ponownie wykonywana. Próbowałem dodać go do viewDidLoad, viewDidAppear i viewWillAppear. co mogę zrobić?Wykrywanie po naciśnięciu przycisku "Powrót do aplikacji"

func determinePermission() { 
    switch CLLocationManager.authorizationStatus() { 

    case .Authorized: 
     if CLLocationManager.locationServicesEnabled() { 
      manager.delegate = self 
      manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
      manager.startUpdatingLocation() 
     } 


    case .NotDetermined: 
     manager.requestWhenInUseAuthorization() 
    case .AuthorizedWhenInUse, .Restricted, .Denied: 
     let alertController = UIAlertController(
      title: "Background Location Access Disabled", 
      message: "In order to be notified about adorable kittens near you, please open this app's settings and set location access to 'Always'.", 
      preferredStyle: .Alert) 

     let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in 
      exit(0) 
     } 
     alertController.addAction(cancelAction) 

     let openAction = UIAlertAction(title: "Open Settings", style: .Default) { (action) in 
      if let url = NSURL(string:UIApplicationOpenSettingsURLString) { 
       UIApplication.sharedApplication().openURL(url) 
      } 
     } 
     alertController.addAction(openAction) 

     self.presentViewController(alertController, animated: true, completion: nil) 
    } 
} 
+0

Spróbuj dodać go do appDidBecameActive. P.S. nie można zamknąć aplikacji programowo, co jest tym, co chcesz zrobić. Umieszczenie wyjścia (0) w kodzie jest niedozwolone. – Gruntcakes

+0

No dobrze, znajdę rozwiązanie dla tego :), ale problemem jest wywołanie metody po naciśnięciu z powrotem do –

+0

Czy próbowałeś z appDidBecomeActive? – Gruntcakes

Odpowiedz

5

Spróbuj dodać go do UIApplicationDelegate.applicationDidBecomeActive.

+1

to applicationDidBecomeActive, a nie 'dodaj' – Max

+1

Funkcja UIApplicationDidDidBecomeActive uruchomi się również po chwilowych przerwaniach, takich jak połączenia telefoniczne lub SMS-y, więc zamiast tego zaleciłbym UIApplicationDidEnterForeground. – Vadoff