私は、Moves アプリのように、アプリが終了したときにユーザーの位置を取得する方法を見つけようとしてきました。私が知っている唯一の方法は、Significant Location Changes を使用することです。ただし、大きな位置変更があると、アプリは 500 メートルごとに起動され、最後の更新から約 5 分経過した場合にのみ起動されます。
Appleによると:
アプリは、デバイスが前回の通知から 500 メートル以上移動するとすぐに通知を受け取ることができます。通知は 5 分に 1 回以上は受け取らないでください。デバイスがネットワークからデータを取得できる場合、位置情報マネージャーが通知をタイムリーに配信する可能性が高くなります。
Moves アプリでは、アプリが終了しても、バッテリーをあまり消耗せずにユーザーの位置情報を非常に正確に取得できます。また、バッテリー使用量リストに「バックグラウンド アクティビティ」としか表示されないため、バックグラウンド位置情報はオンになっていないようです。そのため、Moves のようなアプリがこれをどのように実行しているのか疑問に思っています。どなたか助けていただければ幸いです。よろしくお願いします。
ベストアンサー1
500m圏内の地域を登録し、その地域に通知地域通知を登録することができます。その地域に到達すると、アプリがバックグラウンドで起動します。その後、その場所を中心に新しい地域を再登録します。
からAppleのドキュメント:
バックグラウンド実行をサポートするアプリは、受信したイベントを処理するためにシステムによって再起動されることがあります。ユーザーが強制終了した以外の理由でアプリが終了した場合、次のいずれかのイベントが発生したときにシステムによってアプリが起動されます。
位置情報アプリの場合:
システムは、アプリで設定された配信基準を満たす位置情報の更新を受信します。
デバイスが登録された領域に入ったか、または領域から出ました。(領域は地理的領域または iBeacon 領域のいずれかです。)