WWDC26:Live Activities essentials

Live Activity の実装について。

Live Activities essentials


0:01 – Introduction

  • ライブアクティビティは進行中のタスクやイベントについてユーザーを常に最新状態に保つ
  • 表示場所:ロック画面・ダイナミックアイランド・Apple Watch・CarPlay ダッシュボード
  • 時間経過とともに変化する情報をリアルタイムに表示

1:53 – Create and update

  • 最初のステップは優れたデザインを考えること
    • 長期的に知る必要がある重要な情報を優先し、ひと目で分かるように
  • 効率的なデータモデルの定義(静的なデータと動的なデータとを分けて考える)
    • ActivityAttributes:静的データ(変わらない情報 e.g. 店の名前や注文したドリンク)
    • ActivityAttributes.ContentState:動的データ(変化する情報 e.g. 注文ステータスや残り時間)
  • ビューの構築
    • widge extension を追加、ActivityConfiguration でビューを構築
    • 各表示形式に合わせた UI の構築
      • ロック画面用のアクティビティビューを実装
      • DynamicIslandexpandedcompactLeadingcompactTrailingminimal の 4 形式
      • DynamicIslandExpandedRegion(.leading/.trailing/.bottom) で Dyanmic Island 周囲の各領域のビューを実装
  • ライフサイクル管理
    • ローカル:ActivityKit の Activity.request(attributes:content:) で任意のタイミングか事前にスケジュールし開始(最も簡単)
    • リモート:Broadcast update or プッシュ通知で更新
      • Broadcast updates は大多数のユーザーが同じアクティビティを同時に受ける場合に有効
  • Activity.update(_:)ContentState を更新
    • staleDate でいつ古くなるかを指定可能

9:51 – Optimize

  • iOS 27では、compact / minimal ビューは画面縦横向きの両方で表示可能
    • 縦向きでは幅を柔軟に調整できるが、横向きでは広げる余地がない
  • 特定の制約に対するレイアウトの適応
    • 横向き時のダイナミックアイランドで幅が制限される場合への対応
      • \.isDynamicIslandLimitedInWidth 環境変数で判定
    • StandBy での背景色拡張(edge-to-edge)
      • \.showsWidgetContainerBackground 環境変数を使って activityBackgroundTint を適用
  • Apple Watch 対応:activityFamily .small の採用
    • .supplementalActivityFamilies([.small])ActivityConfiguration に追加
    • \.activityFamily 環境変数で small か否かを判定し、専用の SmallView に切り替え
  • App Intents を使ったインタラクティビティの追加
    • Activity 上のボタンタップで、システムは対応するインテントを実行
    • LiveActivityIntent プロトコルに準拠した Intent を定義
    • Button(intent:) でライブアクティビティ内のボタンに紐付け
    • ライブアクティビティ内から直接アクションを実行可能に

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です