CLLocationManager
ユーザーのルートを追跡し、たどった経路に沿って点を描くアプリがあります。アプリは、必要なバックグラウンド モードを使用してバックグラウンドで実行されます > アプリは位置情報の更新を登録します。
私が理解しているように、バックグラウンドで発生するものはlocationManager:didUpdateToLocation:fromLocation
すべて、位置情報が更新されるたびに呼び出されるメソッドであるため、呼び出す必要があります。
私が抱えている問題は、これが呼び出されなくなることがあるということです。ユーザーの場所が 15 分程度の間隔であまり変化しない場合に発生するようです。私が知る限り、おそらくバッテリーを節約するために、locationManager:didUpdateToLocation:fromLocation への呼び出しが停止します。残念ながら、移動に戻ったときに再び再開することはありません。
この動作をオーバーライドする方法はないと思われるため、通知センターを使用して、アプリがルートを記録していないことをユーザーに通知したいと思います。問題は、これが発生したことをアプリがどのように知ることができるかということです。locationManager:didUpdateToLocation:fromLocation が呼び出されない場合、通知を送信できません。呼び出されている場合、通知は発生しません。
位置情報の更新が停止されるというシステム通知はありますか?
これをデバッグするのは非常に難しいと思います。外出中に Mac をどこにでも持っていくことができず、デバイス上の位置をテストすることができないからです (シミュレーターでできることは限られています)。デバッグのヒントも大歓迎です!