Это мой простой текущий код, чтобы получить обновление местоположения:Получения фона места, когда приложение находится в фоновом режиме
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager: CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation) {
print("in here")
if UIApplication.sharedApplication().applicationState == .Active {
print("App in Foreground")
} else {
let Device = UIDevice.currentDevice()
let iosVersion = Double(Device.systemVersion) ?? 0
let iOS9 = iosVersion >= 9
if iOS9{
// This part gives me error which i think is needed to allow background updates in ios9?
//locationManager.allowsBackgroundLocationUpdates = YES;
//locationManager.pausesLocationUpdatesAutomatically = NO;
}
//let iOS7 = iosVersion >= 7 && iosVersion < 8
print("App is backgrounded. New location is %@", newLocation)
}
}
}
Я добавил NSLocationAlwaysUsageDescription в мой файл Plist и сделал поэтому обновления фона локаций возможны в приложении так нет беспокоится.
Этот код отлично работает при работе в симуляторе как для фона, так и для фона. Затем я хотел попробовать его на своем устройстве, и как только я опишу приложение, он не обновит ни одного местоположения. Я прочитал в нескольких местах, что для прошивки 9 вам нужно добавить этот код:
locationManager.allowsBackgroundLocationUpdates = YES;
Я пытаюсь поставить его в своем коде в быстры, но я получаю сообщение об ошибке:
Cannot assign value of type 'ObjCBool' to type 'Bool'
Любых идеи, как это решить?
Пробовал, что и перед отправкой. Тогда я получаю эту ошибку: использование неразрешенного идентификатора «TRUE» –
lol mybad. Я использовал заглавные буквы. Я просто подумал подождать минуту, что, если он litteraly означает низкие капиталы. Спасибо: P –
Я все еще не могу получить места, когда приложение находится в фоновом режиме. Я добавил UIBackgroundmodes в «location», а также назвал это if ([[[UIDevice currentDevice] systemVersion] floatValue]> = 9) { _locationManager.allowsBackgroundLocationUpdates = YES; } перед вызовом startUpdatingLocation, но все же метод locationManager delegate «didUpdateToLocation:» не запускается, когда приложение находится в фоновом режиме. Пожалуйста, помогите, если вы обнаружили это решение. –