CoreLocationを使用してユーザーの位置を常に追跡しようとしています(エンタープライズアプリなので、ユーザーエクスペリエンスとバッテリー使用量は問題になりません)。
アプリがバックグラウンドにあるときに、startUpdatingLocationを指定したCLLocationと、バックグラウンドタスク用のInfo.plistの「location」キーを使用すると、良好な結果が得られます。
ただし、テストでは、数時間後にアプリが終了し、更新の取得が停止したようです。
applicationWillTerminateでstartMonitoringSignificantLocationChangesを呼び出してみましたが、アプリが終了している間も機能することを期待していますが、機能していないようです。
基本的に、アプリがstartUpdatingLocationの更新を常に受信し続け、バックグラウンドで強制終了されないようにする方法が必要です。