ライブアクティビティチームへの10の質問

ライブアクティビティを使えば、天気予報、飛行機の出発時刻、フードデリバリーの所要時間などのAppの最新情報を、ロック画面から一目で確認できます。さらに、iPhone 14 ProやiPhone 14 Pro MaxのDynamic Islandのようなライブ感のある機能により、ライブアクティビティもユーザーが楽しめる機能を提供しています。

Ask AppleではAppleのエバンジェリスト、デザイナー、エンジニアが一堂に会して、ライブアクティビティやDynamic Islandに関するさまざまな質問にお答えしました。ここでは、そうした質疑応答の中から、サイズやスタイルの設定、ライブアクティビティを閉じるタイミング、ウィジェットとライブアクティビティの違いと共通点など、いくつかのポイントに焦点を当てます。

Apple Push Notification Service(APN)を使わずにライブアクティビティを更新するにはどうすればよいですか?

Appで位置情報サービスなど、既存のバックグラウンドランタイム機能を使って、ライブアクティビティを適宜更新できます。BGProcessingTaskやバックグラウンドプッシュを使って、ライブアクティビティの更新頻度を下げることもできます。これらのバックグラウンドタスクは、システムによってすぐには処理されないことに留意してください。また、以下の質問と回答もご覧ください。

Displaying live data with Live Activities

ライブアクティビティのデフォルトの表示時間である4時間は、自分のユースケースでは長すぎます。ライブアクティビティを終了後に閉じるタイミングについて、ガイドラインを教えてください。

ライブアクティビティを終了するときに、ActivityUIDismissalPolicyを指定して、UIを閉じるタイミングをシステムに伝えることができます。または、ライブアクティビティをすぐに閉じるか、一定時間が経過した後に閉じるかを選択することもできます。

ユーザーがライブアクティビティを閉じたことをAppで検出するにはどうすればよいですか?

activityStateUpdates非同期シーケンスを使うことで、各ライブアクティビティの状態の変化をAppで把握できます。

Appを強制終了した場合、関連付けられているライブアクティビティも閉じるのでしょうか?

ライブアクティビティのライフサイクルはホストAppのプロセスに紐付けられていないため、Appが強制終了した場合も、ライブアクティビティはそのまま残ります。同様に、Widget Extensionのライフサイクルも独立しています。同じライブアクティビティのビューをレンダリングするために、Widget Extensionの別のインスタンスが呼び出される可能性は十分にあるため、Widget Extensionでローカルに状態を保存しないことが重要です。

ライブアクティビティとウィジェットの違いは何ですか?

ライブアクティビティとウィジェットはどちらも、一目でわかる情報をリアルタイムで提供します。ライブアクティビティは、ユーザーが開始した進行中のタスクの状況を表示するのに便利です。たとえば、フードデリバリー、ワークアウト、飛行機の出発時刻などが挙げられます。ウィジェットは、日常的に重要な情報を一目でわかるように表示できます。たとえば、To Doリスト、今週の天気予報、Apple Watchのアクティビティリングの達成状況などがあります。

ライブアクティビティとウィジェットのUIのレイアウトはどちらもWidgetKitに基づいていますが、構造が少し異なります。ライブアクティビティはプログラムにより更新される単一のビューですが、ウィジェットはあらかじめ作成されたビューのタイムラインで構成されています。

ライブアクティビティでDynamic Islandの背景色を変更する必要はありますか?

Dynamic Islandは、背景の色や画像がない場合に最も没入感があります。純粋に、フォアグラウンドのビュー要素のキャンバスだと考えてください。デザインに関するガイダンスについて詳しくは、「Human Interface Guidelines」をご覧ください。

Human Interface Guidelines: Live Activities

ライブアクティビティはインタラクティブなボタンに対応していますか?

ロック画面やDynamic Islandのライブアクティビティは、インタラクティブなボタンやその他のコントロールに対応していません。ライブアクティビティにボタンを含めると、ユーザーがビューを操作できると誤解してしまう恐れがあります。そのため、UIにはボタンのようなものは表示しないようにしてください。

優れたユーザー体験はAppの中で生まれます。そのため、ライブアクティビティをどのように操作してもAppが開くようになっています。ライブアクティビティのロック画面表示や展開表示には、Appへのリンクを複数含めることができるため、ライブアクティビティのコンテキストに応じて、さまざまなリンク先を指定できます。

Dynamic Islandに対応しているのはライブアクティビティだけですか?

Appには、システムUIをDynamic Islandに表示するその他のシステムサービス(CallKitやNow Playingなど)を実装できます。ただし、Dynamic IslandにApp独自のUIを表示する場合は、ライブアクティビティが唯一の方法です。

Dynamic Islandにアニメーションを追加できますか?

ライブアクティビティのビューは自由なアニメーションに対応していません。ただし、ライブアクティビティのコンテンツをAppの状態の遷移に合わせて更新する方法は変更できます。詳しくは、以下の記事の「Animate content updates(コンテンツの更新をアニメーションにする)」セクションを参照してください。

Displaying live data with Live Activities

ライブアクティビティに関する詳しい情報はどこで確認できますか?

ActivityKitのドキュメントには、APNを使ってライブアクティビティを更新および終了する方法など、ライブアクティビティの実装に関する豊富な情報が記載されています。さらに、「Human Interface Guidelines」では、さまざまな表示のデザインに関するガイダンスや推奨サイズを紹介しています。WWDC22のFood Truckサンプルプロジェクトも参考にしてください。

Human Interface Guidelines: Live Activities

Displaying live data with Live Activities

Starting and updating Live Activities with ActivityKit push notifications

ActivityKit

WidgetKit