API

final class StreakManager {
    static let shared: StreakManager

    func recordPlay()  // ゲーム開始時
    func refreshStreakOnLaunch()  // 起動時 / scenePhase(.active)
}

UserDefaults

キー用途
chromatic_streak_count連続日数
chromatic_last_played_date最終プレイ日(YYYY-MM-DD)

処理フロー

  1. recordPlay(): 日付が変わっていれば前日プレイなら +1、なければ 1リセット
  2. refreshStreakOnLaunch(): 最終プレイから2日以上経過 → 0リセット

UI 表示(StreakBadgeView)

日数
0日非表示(opacity=0)
1-6日
7-29日
30日+

変更履歴

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