目次
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で定義したモデルが動的にセットされる
