watchOS 3 の場合、Apple はWKRefreshBackgroundTask
、getNextRequestedUpdateDate
.
新しいアプローチを使用して、2 つの更新の間の時間をどのように判断できますか?
私は(URLから)要求しているデータをハックしgetCurrentTimelineEntry
て複雑さを更新するだけですが、それはAppleが推奨するものではないと思います.
短いコード例は大きな助けになります。
watchOS 3 の場合、Apple はWKRefreshBackgroundTask
、getNextRequestedUpdateDate
.
新しいアプローチを使用して、2 つの更新の間の時間をどのように判断できますか?
私は(URLから)要求しているデータをハックしgetCurrentTimelineEntry
て複雑さを更新するだけですが、それはAppleが推奨するものではないと思います.
短いコード例は大きな助けになります。
私は一般的にこれを別の答えでカバーしましたが、ここであなたの特定の質問に対処します.
複雑なコントローラーをハックして (非同期の) フェッチを行うべきではないというのは正しいことです。データ ソースは、コンプリケーション サーバーからの要求に応じて手元にある既存のデータを返すことのみを担当する必要があります。これは watchOS 2 に当てはまり、watchOS 3 でも当てはまります。
watchOS 3 では、各バックグラウンド更新で次の更新をスケジュールできます。
特定のケースでは、WKURLSessionRefreshBackgroundTask
タスクのダウンロードが完了するまで待つことができます。その時点で、既存のバックグラウンド タスクを完了する前に、次のバックグラウンド更新をスケジュールします。
その時点で、拡張機能が再び起動され、バックグラウンド プロセス全体が再び開始されます。
各サブタスクがリフレッシュ サイクルの個別の側面を処理し、次のサブタスクのスケジューリングを担当する、一連の異なるバックグラウンド サブタスクを連鎖させることもできます。
まだ見ていない場合は、Apple がWatchBackgroundRefreshサンプル コードを提供して、この一部を示しています。使用できます
WKExtension.shared().scheduleBackgroundRefresh(withPreferredDate:userInfo:)
現在のタスクが完了する前に、(最初のタスクまたは) 将来のタスクをスケジュールします。
この例では更新ボタンを使用して次のバックグラウンド更新をスケジュールしていますが、次の要求をスケジュールするのがユーザー アクションであろうとバックグラウンド タスクであろうと、概念は同じです)。