Я пытаюсь понять функцию deferredLocations. Согласно документам Apple, следующее должно работать, и оно работает, когда я запускаю его на симуляторе, но как только я устанавливаю приложение на свой iPhone 6s, отключаю iPhone и запускаю приложение, обновления местоположений не откладываются. Я использую XCode 8 и Swift 3.
Вот код:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager=CLLocationManager()
locationManager!.delegate=self
locationManager!.desiredAccuracy=kCLLocationAccuracyBest
locationManager!.requestAlwaysAuthorization()
locationManager!.distanceFilter=kCLDistanceFilterNone
locationManager!.allowsBackgroundLocationUpdates=true
locationManager!.pausesLocationUpdatesAutomatically=false
locationManager!.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if (!self.deferringUpdates)
{
locationManager!.allowDeferredLocationUpdates(untilTraveled: CLLocationDistanceMax, timeout: 60)
self.deferringUpdates=true
}
}
func locationManager(_ manager: CLLocationManager, didFinishDeferredUpdatesWithError error: Error?) {
i=i+1
label.text="\(i)"
print("didFinishDeferredUpdatesWithError")
locationManager!.disallowDeferredLocationUpdates()
self.deferringUpdates=false
}
Я получаю код ошибки = 11, что означает, что GPS недоступен или что-то в этом роде, согласно документам Apple.
CLLocationManager.deferredLocationUpdatesAvailable
всегда возвращаетfalse
. - person matt   schedule 08.10.2016CLLocationManager.deferredLocationUpdatesAvailable
бытьtrue
. - person matt   schedule 08.10.2016true
. В iOS 10 этого нет. Здесь есть и другие проблемы, но это явный признак того, что что-то не так. - person matt   schedule 08.10.2016