WWDC20を見て、WidgetKit
にキャッチアップしたので、基礎知識をまとめます。
これからキャッチアップしたいよ、という方に向けたノートです。
構成要素
- kind: ウィジェットは1アプリに対していくつかつくれる(たとえばStockアプリのリスト表示、チャート表示など)
- configuration: ウィジェットの基本設定
- StaticConfiguration: ユーザーがカスタマイズ不可の静的デザイン
- IntentConfiguration: ユーザーがカスタマイズ可能な動的デザイン
- supportedFamilies: systemSmall/systemMedium/systemLarge
- placeholder: Default Content but no user data
Snapshot
- Widget Galleyに並ぶスクリーンショット的なView(正確にはスクリーンショットではない)
Timeline
- ウィジェットの更新タイミング
- ウィジェットの更新タイミングも三種類
- Timeline.ReloadPolicy: after(Date), atEnd, never
- atEndはデフォルトでfetchされたら(タイミングは自分で指定)、afterは指定した時間以降、neverは更新しない
- WidgetCenterのメソッドを使うことで開発者の任意のタイミングでreloadが可能(バックグラウンド)
- サーバー通信が必要なときはURLSessionも使える
機能ガイドライン
- ウィジェットはミニアプリではない
- スクロール不可
- 動画不可
- タップしたら表示している情報に関連するアプリ内の詳細Viewに飛ぶ
- そのためにWidgetURLとLinkという新APIが追加されている
- ウィジェットはホーム画面でライブ更新するものではないので、毎秒reloadするような頻繁な更新はやめて、適切なreloadタイミングを設定すること
参考
Meet WidgetKit
Widgets Code-along, part 1: The adventure begins
「Meet WidgetKit」を見た後で、「Widgets Code-along」に移る順番がオススメです。
(僕は逆に見てしまったせいで)前提知識の説明なくて困惑しました)