彼らは最適化を行い(おそらくモーションセンサーを使用して)、電話の「比較的」静止した位置を検出し、位置情報の更新を停止したと思います。これは憶測にすぎませんが、私のテストでは現在次のことが示されています。
- 場所の更新を開始します。(10 メートルと 100 メートルの精度で、それぞれ 3 回テスト済み)
- デバイスの画面をオフにして、アプリをバックグラウンドにします。
- デバイスを 30 分間固定したまま (机の上など) にします。
私がログに記録したデータは、ジオアップデートが 15 分 30 秒後に停止することを示しています。これにより、実行する他のすべてのバックグラウンド処理も終了します。
私のデバイスは iOS 7 を搭載した iPhone 5 です。
これは iOS 6/6.1 には当てはまらないことを 95% 確信しています。100 メートルの精度で地理情報を更新すると、バックグラウンドでほぼ継続的に実行できます。
アップデート
Location Manager を 8 分ごとに再起動すると、継続的に実行されます。
アップデート #2
これは最新ではテストしていませんが、投稿を書いたときに再起動した方法です。これがお役に立てば幸いです。
- (void)tryRestartLocationManager
{
NSTimeInterval now = [[NSDate date] timeIntervalSince1970];
int seconds = round(floor(now - locationManagerStartTimestamp));
if ( seconds > (60 * 8) ) {
[locationManager stopUpdatingLocation];
[locationManager startUpdatingLocation];
locationManagerStartTimestamp = now;
}
}