0

私のアプリは、バックグラウンドのときにリージョン モニタリングを使用します。アプリがバックグラウンドに入るとすぐに、その位置 (既にフォアグラウンドにある) を取得し、その周囲に領域を作成して、その領域の監視を開始します。

ログにココアの木こりを使用しており、applicationDidFinishLaunchingWithOptions 内でログを設定すると、「ログを開始しています...」とログが記録されます。通常、アプリが最初に開いたとき、または何らかの理由でアプリがクラッシュし、アプリを再起動してログを見て理由を判断する必要がある場合にのみ、これが表示されると予想しています. 今日テストを行っていると、次のように、リージョンを作成してから数分後に、5 時間の間にファイルに「Starting logging」のインスタンスが 15 個あることに気付きました (場所固有の情報を削除しました)。

  • 午後 7 時 17 分: 作成されたリージョン: regionFor: [xxx, -xxx] with radius: 200
  • 19:25: ロギング開始....

(ここでは、移動してサーバーにリクエストを送信するかどうかを確認するために、いくつかの簡単な場所の更新を行います。これには約 1 秒かかり、監視する別のリージョンを作成します...)

  • 午後 7 時 25 分: 作成されたリージョン: regionFor: [xxx, -xxx] with radius: 200
  • 19:44: ロギング開始....

(ここでは、移動してサーバーにリクエストを送信するかどうかを確認するために、いくつかの簡単な場所の更新を行います。これには約 1 秒かかり、監視する別のリージョンを作成します...)

  • 7:44pm: CREATED REGION: regionFor: [42.77846, -71.42591] with radius: 100
  • 8:04pm: ロギングを開始します....

場所の更新に関連して削除したものと、関連性がないと思われるサーバー要求の間にログがあります... アプリがユーザーによって強制終了された後、電話自体が再起動された後、またはアプリがクラッシュした後、初めて開始されます。これは予期された動作ですか、それともアプリがクラッシュした後、何らかの形で OS によって再起動されているのでしょうか?

注意すべきことの1つは、ロケーションの更新を処理してリクエストを送信するバックグラウンドタスクを開始する方向に進む可能性が高いことです。ロケーションの更新に少し時間がかかり、リクエストにも時間がかかる場合があると確信しているためです。 didExitRegion の更新を処理するには、私が読んだ 10 秒以上が必要ですが、それは私が見たこの一見奇妙な動作とは無関係のようです。どんな助けでも大歓迎です。

4

1 に答える 1