バックグラウンドモードを含むロケーションアップデートが必要なiOS 9アプリを(Swiftで)作成しています。問題は、私はフォアグラウンドでのみ位置情報の更新を取得することです。 Info.plistのではiOS 9アプリがバックグラウンドでの場所を報告していない
:
はNSLocationAlwaysUsageDescriptionの値を指定された私は、私はすべてを正しく行っていると思います。
NSLocationUsageDescriptionの値を指定します。
NSLocationWhenInUseUsageDescriptionの値を指定します。
UIBackgroundModesに "location"が含まれています。次のようにUIRequiredDeviceCapabilities
で
含まれる "GPS" と "場所・サービスは、" ロケーションマネージャを開始:
let locationManager = CLLocationManager() locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters locationManager.distanceFilter = 250.0 locationManager.allowsBackgroundLocationUpdates = true locationManager.startUpdatingLocation()
私も locationManager.pausesLocationUpdatesAutomaticallyが偽であることを確認しました。
アプリがフォアグラウンドでない間、私は何場所の更新を取得しません。私が場所の更新を取得する唯一の時間は、私がアプリをフォアグラウンドに持っていれば、さらにはすべてではない場合です。
何が問題なのでしょうか?または私の期待は間違っていますか?
距離フィルターを250に設定しました。小さい値を試しましたか?十分に歩きましたか? – Raptor
kCLLocationAccuracyHundredMetersの位置精度はGPSを使用しないため、更新を取得するには公平な距離を移動する必要があります。おそらく500-600mのオーダーである。あなたのロケーションマネージャはどこに割り当てられますか? AppDelegateのプロパティですか?迅速なアップデートや正確な場所が必要ない場合は、重要なロケーション変更の監視を使用する方が良いかもしれません。 – Paulw11
10-30マイルを運転した後であっても、絶対に場所の更新は見られません。アップデートは、アプリをフォアグラウンドに持ってきたときにのみ発生します。 –