概要

ActivityKitを使用してロック画面・Dynamic Islandにタイマー経過時間を表示する機能。 本体タイマーと1秒同期、終了時のクリーンアップ含む安全な実装。

LiveActivityService API

final class LiveActivityService {
    static let shared: LiveActivityService

    func startActivity(subject: Subject) async
    func updateActivity(elapsedSeconds: Int) async
    func endActivity() async
    func cleanupOrphanedActivities() async  // 起動時に呼出
}

処理フロー

  1. タイマー開始 → Activity.request(attributes:contentState:)
  2. 1秒ごと → activity.update(.init(state:))
  3. タイマー停止 → activity.end(.init(state:))
  4. アプリ起動時 → cleanupOrphanedActivities() で残骸検出・削除

ビジネスルール

外部連携

連携先用途
ActivityKitLive Activity起動・更新・終了
WidgetKitActivity拡張のUI実装

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成