概要

UserNotifications フレームワーク(ローカル通知)で3種類の通知を配信。 日次リマインダー・ストリーク危機通知・週間サマリ通知(v1.0.5 追加)の3層構成。

3種類の通知

通知Identifierタイミング用途
Daily ReminderworkoutReminder毎日定時(19時など)記録忘れ防止
Streak RiskstreakRiskReminder当日未訓練の翌朝ストリーク途切れ警告(v1.0.5)
Weekly SummaryweeklySummaryNotification週末(日曜夜など)週間サマリ通知(v1.0.5)

NotificationService API

@MainActor
final class NotificationService {
    static let shared: NotificationService

    func requestAuthorization() async throws
    func scheduleReminder(at time: Date)
    func scheduleStreakRiskReminderIfNeeded()
    func scheduleWeeklySummaryNotification()
    func cancelAll()
}

処理フロー(Daily Reminder)

  1. SettingsView で時刻設定
  2. scheduleReminder(at: time) → UNCalendarNotificationTrigger 作成
  3. 毎日その時刻に通知配信

処理フロー(Streak Risk)

  1. 毎日アプリ起動時または日付変更時に判定
  2. 当日未訓練 + ストリーク継続中なら通知スケジュール
  3. 翌朝に「今日トレーニングしないとストリークが途切れます」通知

ビジネスルール

外部連携

連携先用途
UserNotificationsローカル通知
Info.plist通知許可ダイアログ文言

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成(v1.0.5 の Streak Risk / Weekly Summary 含む)