アプリには約10メートルの精度でデバイスの場所が必要です。アプリが起動されると、通常、必要な精度を得るために10秒。この遅延は問題ありません。しかし、アプリが「使用中」の場合(下記参照)、遅れは少なくなるはずです。 1秒。iOS:他のアプリがアクティブになっているかどうかを確認する
問題は、以下である:
ユーザがディスプレイをオフにするとき、バックグラウンド状態にアクティブ状態からアプリ遷移(及びデリゲートメソッドapplicationWillResignActive
とapplicationDidEnterBackground
が呼び出されます)。
通常、ロケーションの更新はバックグラウンドで行われません。そのため、次回にアプリがバックグラウンドからアクティブな状態に移行する(デリゲートメソッドapplicationWillEnterForeground
とapplicationDidBecomeActive
が呼び出されます)、ロケーションマネージャは再び必要になります。必要な精度に達するまで10秒。残念ながらこの遅れはOKではありません。
これを避けるため、アプリはバックグラウンドで位置情報の更新を行うことができます。これは正常に動作します。
ユーザーがホームボタンを押して別のアプリに切り替えたため、アプリがもう使用されなくても、これらのバックグラウンドの場所の更新が継続されるという欠点があります。これは、少なくとも2つの理由で妨げになっています:GPSハードウェアが不必要にアクティブで電力を消費していますが、私のアプリがデバイスの場所を使用していることが通知されます。
私の質問は、このようです:
それは別のアプリがアクティブになったかどうかを判断することは可能ですか?
この場合、バックグラウンドの場所の更新を無効にすることができます。
ありがとうございました。私は、別のアプリがアクティブになるかどうかを判断することができないことを恐れていました。残念ながら、あなたの提案はタイマーで問題を解決することはできません。なぜなら、アプリは数分から、例えば2時間で "使用中"になる可能性があるからです。 –