2015-09-17 4 views
6

Я создал функцию, которая, как предполагается, обрабатывает разрешение с местоположением, так что приложение закроется, если у него нет разрешения на местоположение. Однако, когда вы нажимаете открытые настройки и нажимаете «назад в приложение» в строке состояния, метод determeinePermission не выполняется снова. Я попытался добавить его в viewDidLoad, viewDidAppear и viewWillAppear. что я могу сделать?Обнаружить, когда нажата кнопка «Назад к приложению»

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

Попробуйте добавить его в appDidBecameActive. Постскриптум вы не можете закрыть приложение программно, что вы говорите, что хотите сделать. Ввод вывода (0) в ваш код не разрешен. – Gruntcakes

+0

хорошо, я найду решение для этого :), но проблема заключается в вызове метода при нажатии на –

+0

Пробовал ли вы его с помощью appDidBecomeActive? – Gruntcakes

ответ

5

Попробуйте добавить его в UIApplicationDelegate.applicationDidBecomeActive.

+1

это applicationDidBecomeActive не 'add' – Max

+1

UIApplicationDidDidBecomeActive также запускается после временных перерывов, таких как телефонные звонки или SMS-сообщения, поэтому я бы рекомендовал вместо этого UIApplicationDidEnterForeground. – Vadoff

Смежные вопросы