Repository navigation
[NM-635] 알람킷 종료 후 앱 내 타이머가 남는 현상 해결 - #201
Merged
Merged
Conversation
만료 카드는 AlarmKit 알람이 울리는 동안만 남긴다. 만료 시각이 지났는데 알람이 없으면 앱 밖(잠금화면 · Dynamic Island · 워치)에서 끈 것으로 보고 지운다 — 앱이 떠 있으면 바로, 아니면 다음 활성화 때. 예전엔 [완료]를 한 번 더 눌러야 사라졌다. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…it-sync # Conflicts: # Projects/App/Sources/Application/SceneDelegate.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 요약
알람을 앱 밖(잠금화면 · Dynamic Island · 워치)에서 끄면 앱 안 만료 카드가 남아
완료를 한 번 더 눌러야 사라지던 문제를 고친다. 만료 카드의 기준을 저장소가 아니라 **시스템 알람(AlarmKit)**으로 둔다.변경 내용
TimerAlarmScheduling—liveAlarmIDs()(살아 있는 알람 id) ·alarmsChanged(목록 변경) 추가. 기본 구현은 nil · EmptyAlarmKitAlarmScheduler—AlarmManager.shared.alarms·alarmUpdates. 위젯이 예약한 알람도 앱 알람이라 함께 나온다DefaultTimerUseCase.syncWithSystemAlarms()— 정리한 타이머는timerEnded(completed,endedOutsideApp = true)로 알린다timer_complete로 번역하고, 리뷰 요청은 앱 밖 완료로 본다(NM-560)SceneDelegatereload → refresh → syncWithSystemAlarmsdrainOutsideTimerEvents()로 묶음TimerStopIntent·TimerWidgetStopIntent)는 그대로 — 인텐트가 먼저 지웠으면 맞출 대상이 없어 이벤트가 겹치지 않는다테스트
TimerSystemAlarmSyncTests4개 — 만료 · 알람 없음 → 지움 / 울리는 중 → 남김 / 카운트다운 · 일시정지 → 그대로 / 목록 모름 → 그대로완료로 정리)체크리스트
[NM-XXX] 요약형식<type>/NM-XXX-요약형식[NM-XXX] type: 요약형식