0

CLLocationManagerユーザーのルートを追跡し、たどった経路に沿って点を描くアプリがあります。アプリは、必要なバックグラウンド モードを使用してバックグラウンドで実行されます > アプリは位置情報の更新を登録します。

私が理解しているように、バックグラウンドで発生するものはlocationManager:didUpdateToLocation:fromLocationすべて、位置情報が更新されるたびに呼び出されるメソッドであるため、呼び出す必要があります。

私が抱えている問題は、これが呼び出されなくなることがあるということです。ユーザーの場所が 15 分程度の間隔であまり変化しない場合に発生するようです。私が知る限りlocationManager:didUpdateToLocation:fromLocation、おそらくバッテリーを節約するために、停止するように求められます。残念ながら、移動中に再び再開することはありません。

この動作をオーバーライドする方法はないと思われるため、通知センターを使用して、アプリがルートを記録していないことをユーザーに通知したいと思います。問題は、これが発生したことをアプリがどのように知ることができるかということです。が呼び出されない場合locationManager:didUpdateToLocation:fromLocation、通知を送信できません。呼び出されている場合、通知は発生しません。

4

2 に答える 2

1

ロケーション マネージャーがイベントの送信を停止したことを通知する方法はないと思いますが、発生しないようにする方法はあります。iOS 6 では、サービスが使用されていないと判断した場合にロケーション マネージャーがサービスの電源を切ることができる新しい機能が追加されました。次のようにすると、ロケーション マネージャーは、バッテリーがなくなるまでバックグラウンドでイベントを送信し続けます。

if ([self.locationManager RespondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) { self.locationManager.pausesLocationUpdatesAutomatically = NO; }

また、iOS6 では、非推奨locationManager:didUpdateLocations:の asを使用する必要があります。locationManager:didUpdateToLocation:fromLocation:

于 2013-04-15T12:10:13.467 に答える
0

2 つのデリゲート メソッド:

-(void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager

-(void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager

は、一時停止のために位置情報の更新がいつ停止および開始されるかを通知します。

于 2013-07-09T21:12:50.540 に答える