WWDC25:Wake up to the AlarmKit API

地味に反響の大きな AlarmKit について。筆者は10年以上前にポモドーロタイマーアプリをリリースしたことがあったが、ローカル通知頼りにならざるを得ず、体験的にイマイチだったし、通知が溜まりまくってカオスになってしまっていた。AlarmKit があれば、ポモドーロ以外にも細かなシーンを補えるので嬉しそう。(例えば筋トレアプリだとインターバルの残り時間とか)


0:00 – ようこそ

  • AlarmKit はアプリでアラームを作成できるフレームワーク
  • スケジュール型とカウントダウン型の2方式目立つアラートを提供
  • サイレントモードやフォーカスを突破してアラートを表示
  • カスタムアラームタイトルとアプリ名を表示し、停止やスヌーズ機能を提供
  • StandBy や Apple Watch でもサポート
  • Live Activities を使ったカスタムカウントダウンインターフェースも可能

0:32 – 概要

  • アラーム機能はユーザーが各アプリごとにオプトインで有効化
  • 許可は手動で要求するか、最初のアラーム作成時に自動要求
    • 設定アプリでいつでも許可状態を変更可能
    • NSAlarmKitUsageDescriptioninfo.plist に追加して使用目的を説明
    • AlarmManager.requestAuthorization() で手動許可要求
  • authorizationState で許可状態を確認してからアラームをスケジュール
    • 拒否時の制限明示も重要

1:39 – 作成

  • アラーム作成に必要な要素:
    • カウントダウン時間(pre-alert/post-alert duration)
    • スケジュール(固定日時または相対パターン)
    • 外観設定
    • カスタムアクション処理
    • 関連サウンド
  • スケジュールの指定:
    • 固定スケジュール:特定の未来日時を指定(タイムゾーン変更に影響されない)
    • 相対スケジュール:時刻と週次繰り返しパターンを指定(タイムゾーン変更に対応)
  • アラーム外観のカスタマイズ:
    • AlarmButton でボタンのテキスト、色、アイコンを設定
      • アイコン(SF Symbols)は Dynamic Island 表示に使用
    • AlarmPresentation でアラートタイトルを設定
    • AlarmAttributes でアラーム属性を設定
      • 表示のレンダリングに必要な情報
      • tintColor の設定:アラームとアプリの関連性を伝えるのに役立つ
    • AlarmConfiguration に、duration と attributes を含める
  • カウントダウン表示の設定:
    • 繰り返しボタンを AlarmPresentationsecondaryButton / scondaryButtonBehavior に指定 (.countdown)
    • Live Activities を使ったカウントダウン UI
      • Live Activity を Widget Extension に追加
    • 追加情報の表示設定:
      • AlarmMetadataAlarmAttributesmetadata に指定
      • Live Activity 側で context.attributes.metadata を抽出して表示に活用
    • カウントダウンインターフェイスの表示はシステムが保証:システム表示のカスタマイズ(一時停止/再開ボタン等)
  • カスタムアクション:
    • App Intent を使ったカスタムボタンアクション
    • アプリを開く、詳細表示等の処理
    • アラームに一意の識別子を定義して追跡できるようにする
  • サウンド設定:
    • デフォルトシステムサウンドまたはカスタムサウンド
    • ActivityKit の AlertSound 構造体を使用
      • サウンドファイルはメインバンドルか、Library/Sounds に格納

16:32 – ライフサイクル

  • AlarmManager クラスでアラームのライフサイクルを管理
  • 一意の識別子を使ってアラームを追跡
  • カウントダウン状態への移行、キャンセル、停止、一時停止、再開が可能
  • ベストプラクティス:
    • 特定間隔のカウントダウン(料理タイマー)や繰り返しアラート(目覚まし)に適している
    • 重要な通知や時間敏感な通知の代替ではない
    • アラート表示は明確で理解しやすく(何のアラームか、どのようなアクションが可能か)
    • Live Activities には残り時間、停止ボタン、一時停止/再開ボタンを含める

コメントを残す

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