CLLocationManager を使用して、ユーザーの現在の GPS 位置をフォアグラウンドとバックグラウンドで更新したいと考えています。info.plist とターゲット機能の下でロケーション バックグラウンド モードを使用するためのアプリを登録しました。iPhone シミュレーターではすべて正常に動作しますが、実際の iPhone では、アプリがバックグラウンドにあるときに関数 didUpdateLocations が 2 回呼び出されるだけです。Xcode で GPS データをシミュレートする gpx ファイルを使用します。アプリがフォアグラウンドにあるときに機能し、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 と Xcode 7.0 ベータ 5 の IOS 9
実際のデバイスでバックグラウンドのデリゲート呼び出しを受け取らない理由を誰かが知っていますか?
ありがとう。