0

私はiOSアプリケーションでCoreLocationを使用しています。私は重要な場所の変更といくつかのジオフェンスを使用しています。現在はうまくいっていますが、より多くの位置情報を取得することで、私の位置情報の品質を改善したいと考えています。CoreLocation - ロケーションサービスを開始するGeofenceイベント

現在、私はCLLocationManagerインスタンスを自分のアプリケーションで実行しています。この1つのインスタンスは、ジオフェンスとlocationUpdatesをリッスンします。

私の知る限り、重大な変更はセルタワーの変更に関連していますが、私には十分ですが、より多くの場所データが必要な場合があります。

バッテリの消費量が増えるので、私はを使用したくないですが、ジオファンス間でlocationUpdatesの有効化と無効化(重要なアップデートを開いたまま)について考えています。したがって、ジオフェンスイベントが発生すると、CLLocationManagerのセカンダリインスタンスを開始する予定です。別のGeofenceイベントが発生するまで、そのセカンダリインスタンスを実行し続けます。

これは、位置情報サービスを常に開いたままにしなくても、必要な場所の詳細な位置情報を取得するのに役立ちます。

私のアプローチはiOSで可能かどうかはわかりません。ジオフェンスのいずれのイベントでも、私のアプリはほとんどの背景になるだろう。セカンダリCLLocationManagerの起動と停止を有効にすることはできますか?

私はすでにロケーションアップデートのバックグラウンドモードを有効にしていますが、現在のバージョンで正常に動作しています。

ありがとうございます。

答えて

0

別のCLLocationManagerインスタンスは必要ありません。私の理解(そして経験)は、ジオフェンシングとロケーション更新が同じCLLocationManagerに共存できるということです。あなたのアプリがバックグラウンドで場所イベントに応答することができ

、例えば:

AppDelegate.swiftで:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    // were we invoked due to LocationManager event: 
    if launchOptions?[UIApplicationLaunchOptionsLocationKey] != nil { 
     printLog("UIApplicationLaunchOptionsLocationKey") 

     // We were previously terminated/suspended and need to configure locmgr 
     // etc. 
     // after this, app will process received location events via 
     // didUpdateLocations() 
     // didExitRegions() 
関連する問題