2016-07-11 3 views
1

Фоновое местоположение не работает после приложения kill/Terminate. Я использую в моем приложении NSLocationAlwaysUsageDescription и принести фон также на из возможностей, вот мой код:Почему фоновое местоположение не работает после приложения kill/Terminate в iOS 9.3

import UIKit 
import CoreLocation 

class ViewController: UIViewController, CLLocationManagerDelegate{ 

    var locationManager: CLLocationManager! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.distanceFilter = 1000.0 
     locationManager.allowsBackgroundLocationUpdates = true 
     locationManager.startUpdatingLocation() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

     if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedWhenInUse || 
      CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedAlways){ 

      let currentLocation = manager.location 
      let notification = UILocalNotification() 
      notification.alertBody = " Lat \(currentLocation?.coordinate.latitude), Long \(currentLocation?.coordinate.longitude)" 
      notification.soundName = UILocalNotificationDefaultSoundName 
      UIApplication.sharedApplication().scheduleLocalNotification(notification) 

      print(" Lat \((currentLocation?.coordinate.latitude))!, Long \((currentLocation?.coordinate.longitude))!") 
     } 

    } 

} 

этот код работает при нажатии кнопки нажмите домой, но после того, как прекратить/убить приложение в этом состоянии не работает, пожалуйста, дайте мне решение здесь, что я пропустил внутри своего кода.

+0

Здравствуйте Роб теперь я получил решение и мой код работает отлично, если приложение в убийство/прекратить прямо сейчас, и возможность вызова веб-сервиса и расположение также. –

+0

Обновленный код не работает в завершенном состоянии. Используется устройство Xcode 8 и iOS 9.3.5. Написал все коды только в контроллерах. Все, что мне нужно написать в делегате приложения. Пожалуйста, помогите мне. – Prakash

ответ

1

После некоторых изменений я получил решение самостоятельно, выполнив эти изменения, и код работает нормально в фоновом режиме и режиме переднего плана, теперь можно получить местоположение.

Swift 3

locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.distanceFilter = 2000 
    if #available(iOS 9.0, *) { 
     locationManager.allowsBackgroundLocationUpdates = true 
    } 
    locationManager.startMonitoringSignificantLocationChanges() 
    locationManager.pausesLocationUpdatesAutomatically = true 
    locationManager.requestAlwaysAuthorization() 
+0

.. Знаете, почему ваш обновленный код работает? Если нет, прочитайте документ Apple. Нет необходимости использовать как startUpdatingLocation(), так и startMonitoringSignificantLocationChanges(). Вам просто нужно использовать startMonitoringSignificantLocationChanges(), чтобы выполнить свою задачу. Вы можете спросить меня в случае каких-либо сомнений. – Kirti

+0

Выше код не работает в состоянии прекращения. Не могли бы вы помочь мне? Xcode 8 и 9.3.5 устройство – Prakash

+0

Да, я обновлю код выше для Swift 3 через некоторое время. –