Widget Code-Along 3 – アドバンシングタイムライン – WWDC2020

Session概要

パート2に引き続きWidget、タイムライン、設定のコンセプトのより高度な部分を探っていきます。インプロセスまたはバックグラウンドでのURLローディングとアプリ内のコンテンツに直接リンクする方法について。
複数のWidgetを作成してアプリ内の異なる機能を呼び出す方法、Widgetをよりダイナミックに設定する方法について https://developer.apple.com/videos/play/wwdc2020/10036/

Widget ExtensionからURLSessionを使用する方法

Widgetがネットワークからデータを取得する方法

  • Timeline Provider APIは戻り値ではなく、完了ハンドラで構築する
    • 特に、非同期のタスクの実行、ネットワークフェッチなど
  • URLSessionの完了ハンドラでExtensionをホストするアプリをバックグラウンドURLSessionで起動する機能はWidgetでは使用できない
  • Widgetは作成する全て(バックグラウンドも含む)のURLSessionに応答する
    • ただし、アプリケーションデリゲートがない
    • そのため、WidgetではWidgetConfigurationのonBackgroundURLSessionEvents モディファイアを使用する
      • アプリケーションデリゲートメソッドに似ており、sessionIdentifierと完了ブロックを受け取る

SwiftUI Link APIを使いWidgetでタップできるリージョン作成

Widget Bundleについて

  • 同じExtensionで複数のWidgetを提供可能
  • 原則としてプロセス毎にメインのWidgetは1つだけ
    • ただし、WidgetBundleを作成可能
    • WidgetBundleに複数のWidgetを紐付けて、1つのメインWidgetに複数のWidgetを設定する

Widgetの設定にオプションの動的なセット提供する方法

  • Intent Extensionでオプションの動的なリストを提供する
  • カスタムIntentのプロパティの項目はIntent Extensionで定義したモデルが動的にセットされる
最新情報をチェックしよう!