私はiOSアプリケーションでHKObserverQueryとbackground deliveryを使用しています。 HKObserverQueryのupdateHandlerでは、クエリ(HKAnchoredObjectQuery)を実行し、結果をhttps経由でリモートサーバーに送信します。しかし、遅い接続(EDGEなど)や大量のデータ(たとえば手順)では、データ送信に最大1分かかることがあります。 HKObserverQueryCompletionHandlerにdocumentationからHKObserverQueryCompletionHandlerタイムアウト?
:
HealthKitアプリを復帰したとき、それは新しいデータに一致するオブザーバクエリの更新ハンドラを呼び出します。このブロックは、更新ハンドラに渡されます。着信データの処理が終了するとすぐにこのブロックを呼び出す必要があります。このブロックを呼び出すと、正常にバックグラウンドデータを受信したことがHealthKitに伝えられます。このブロックを呼び出さないと、HealthKitは引き続きバックオフアルゴリズムを使用してアプリを起動しようとします。アプリが3回応答しない場合、HealthKitはあなたのアプリがデータを受信できないとみなし、バックグラウンドアップデートの送信を停止します。
私の質問は、HKObserverQueryCompletionHandlerに電話する必要があります。私のアプリは、HealthKitが「ハングした」とみなされる前に呼び出す必要がありますか? 代わりにHKObserverQueryCompletionHandlerとすぐに電話し、run a new long-running background taskをhttpsリクエストに使用する必要がありますか?