前置き
前回のまとめたWWDC20-22の簡易まとめのつづきとしてWWDC23でのWidgetKitについて注目すべき機能をまとめました。
1, WWDC23でのWidgetの主な進化
- StandbyModeでの表示
StandByModeとはiOS17から新しく搭載された画面で、 充電中に画面を横にするとこのモードとなります。主にナイトスタンドやキッチンカウンター、デスクには最適とされていて、スワイプで色々な時計スタイルに変更可能です。またカスタマイズも可能で、カレンダーなどの標準アプリウィジェットの他にサードパーティアプリのウィジェットも表示することができるので、開発者は自身のアプリのWidgetを対応させることでユーザーがこのモードでもWidgetが使用可能になります。Siriで簡単に音楽を再生したりも可能です。スマートスタックなので、適切な時に適切な情報を自動で表示。SmartStackはiOS14(Widget登場時)から存在していて、簡単に言うと複数のWidgetを1つの枠にまとめられる機能(PageControlみたいな見た目)で、システムがその時に一番最適なwidgetを自動で判断し回転する機能をもっています。こちらの回転のタイミングなどはシステムの自動学習だけでなくwidgetでRelevanceを設定することである程度コントロールすることができます。
[参考]
Standby:https://developer.apple.com/videos/play/wwdc2023/101/?time=1922
Add intelligence to your widgets:https://developer.apple.com/videos/play/wwdc2021/10049/
-
インタラクティブ機能の強化
Widget内でボタン、トグルが使用可能になりました。以前まではWidgetを長押しして編集することで(例えば天気アプリWidgetで編集して現在地を変えるなど)インタラクションを可能にしていましたが、今回のアップデートでより簡単にユーザーはWidgetとのインタラクションが可能になります。ボタンやトグルが可能となった背景にWidgetKitの仕組みについてまず説明されました。
WidgetKitを使ってProviderにTimeLineがを設定されそれがEntryとして設定されると、システムはそのタイムラインに応じてあらかじめViewを生成してそれをアーカイブします。システムは表示する時間になったタイミングでそのアーカイブから表示情報をもってきて表示する。動的に表示を変えたいときはreloadTimelines関数を呼び出すことで、前述までのプロセスを経て新しいエントリが再生成されてWidgetが表示されることとなる。ちなみにこれはアプリが呼び出すことで動作するようになっているので、ウィジェットが表示されているときはコードは実行されない。つまり、ウィジェット内でのボタンやトグルについてのクロージャは実行されずバインディングを変更しないので、いままではボタンなどの表示はできてもそのアクションによって表示を変えることはできませんでした。しかし、AppIntentの拡張によってこれを解決することができました。
ちなみに既存であったウィジェット編集した時に、選択肢を選択するとwidgetが更新されるのは、IntentConfigutarion(Widgetkit内部でSiriKitを使った機能。SiriKitを使うことで選択するというユーザーアクションを検知することができる。)を使っていました。 -
アニメーションが可能に
SwiftUIでアニメーションが進化したのでそれに伴ってWidgetでもそのアニメーションが利用可能になった
[参考]
Bring widgets to life:https://developer.apple.com/videos/play/wwdc2023/10028/