0

私のiOSアプリでは、タイマーでコアロケーションマネージャーを使用して現在の場所を取得しています。アプリは構成可能なので、ユーザーは 1 分まで設定できます。したがって、アプリがバックグラウンドにある場合でも、1 分ごとに GPS の位置が報告されます。

コア ロケーション マネージャーに大幅な変更を加えるのではなく、精度が向上するためタイマーを引き続き使用したいと考えています。

タイマーを 5 秒に設定することで予見可能な問題はありますか? これを行う理由は、場所を取得して変数に保存し、5 秒後に再度取得して距離変数と比較し、ユーザーが十分に移動したかどうかを判断し、移動した場合は報告するためです。

4

2 に答える 2

0

これを行うには、間違ったアプローチに従っています。それを実現するには、 AppleDelegatesが提供する を使用する必要があります。あなたがしていることは、完全に間違っています。最後の位置から変更されていない場合、5 秒後に位置を確認する必要があるのはなぜですか。

問題の解決策:

要件に応じて精度を設定する必要があります。

kCLLocationAccuracyBestForNavigation
kCLLocationAccuracyBest
kCLLocationAccuracyNearestTenMeters
kCLLocationAccuracyHundredMeters
kCLLocationAccuracyKilometer
kCLLocationAccuracyThreeKilometers

場所に特定の変更があるときはいつでも、デリゲート メソッドの呼び出しを取得します。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

バッテリーを節約するだけでなく、場所を何度も取得するための不要な呼び出しを節約できるため、パフォーマンスが向上します。

于 2013-12-05T07:31:31.333 に答える