2016-05-18 7 views
1

バックグラウンドモードを含むロケーションアップデートが必要な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が偽であることを確認しました。

アプリがフォアグラウンドでない間、私は場所の更新を取得しません。私が場所の更新を取得する唯一の時間は、私がアプリをフォアグラウンドに持っていれば、さらにはすべてではない場合です。

何が問題なのでしょうか?または私の期待は間違っていますか?

+0

距離フィルターを250に設定しました。小さい値を試しましたか?十分に歩きましたか? – Raptor

+0

kCLLocationAccuracyHundredMetersの位置精度はGPSを使用しないため、更新を取得するには公平な距離を移動する必要があります。おそらく500-600mのオーダーである。あなたのロケーションマネージャはどこに割り当てられますか? AppDelegateのプロパティですか?迅速なアップデートや正確な場所が必要ない場合は、重要なロケーション変更の監視を使用する方が良いかもしれません。 – Paulw11

+0

10-30マイルを運転した後であっても、絶対に場所の更新は見られません。アップデートは、アプリをフォアグラウンドに持ってきたときにのみ発生します。 –

答えて

0

どのようにアプリをバックグラウンドに送りますか?スワイプして殺すと、アプリは自動的に再起動せず、ロケーションイベントを受信します。あなたのコードには表示されませんが、requestAlwaysAuthorizationを呼び出しましたか? LocationManager:didFailWithErrorを実装して、アイデアが得られるかどうかを確認することもできます。

関連する問題