我想使用 CLLocationManager 在前台和后台更新用户当前的 GPS 位置。我在 info.plist 和目标功能下注册了使用位置背景模式的应用程序。在 iPhone 模拟器上一切正常,但在我真正的 iPhone 上,当应用程序处于后台时,函数 didUpdateLocations 只会被调用两次。我使用 gpx 文件在 Xcode 中模拟 GPS 数据。它在应用程序处于前台时工作,我可以在 MapView 上看到进度。
这是我的 ViewController 中的代码:
lazy var locationManager: CLLocationManager! = {
let manager = CLLocationManager()
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.delegate = self
manager.requestAlwaysAuthorization()
manager.pausesLocationUpdatesAutomatically = false
//manager.distanceFilter = 250
return manager
}()
//Location manager delegate function
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if(UIApplication.sharedApplication().applicationState == .Background){
print("background call")
}else{
print("foreground call")
}
// Save GPS coordinates
saveGpsCoordinates(locations[0])
}
我正在使用:iPhone 5 上的 IOS 9 和 Xcode 7.0 beta 5
有人知道为什么我在真实设备上没有收到任何后台代理调用吗?
谢谢。