Skip to content

fix: 겹친 알람에서 조작 대상이 어긋나지 않게 하고 밀려난 알람도 미룰 수 있게 한다 (167) - #173

Merged
OnlyReadOneBook merged 1 commit into
mainfrom
feat/167
Sep 6, 2026
Merged

OnlyReadOneBook merged 1 commit into
mainfrom
feat/167

Conversation

@OnlyReadOneBook

Copy link
Copy Markdown
Owner

📌 Issues

Closes #167

📎 Work Description

알람이 겹칠 때 「다시 알림」 과 「끄기」 가 화면에 보이는 일정이 아니라 마지막에 도착한 알람에 걸렸습니다. #131 에서 겹침을 다루면서 남은 자리입니다.

서비스는 「지금 울리는 것」 을 필드 하나로 들고, 새 알람이 오면 앞의 것을 조용한 알림으로 옮긴 뒤 그 필드를 덮어씁니다. 그런데 전체 화면의 버튼은 신원 없는 요청만 보내고 서비스는 그것을 무조건 지금 값에 적용했습니다.

전체 화면은 singleInstance 라 새 알람이 onNewIntent 로 들어오면 제목을 갱신하지만, 화면이 켜져 잠금이 풀린 상태에서는 시스템이 전체 화면 의도를 띄우지 않고 헤드업으로 내립니다. 그때 onNewIntent 가 오지 않으므로 화면에는 앞 알람 제목이 그대로 남고, 서비스의 값만 뒤 알람으로 바뀝니다.

요청에 신원을 실어 보냅니다. 끄기와 다시 알림 인텐트가 자리 번호를 담고, 화면은 자기가 받은 값을 그대로 되돌려 줍니다. 서비스는 요청의 신원이 지금 울리는 것과 다르면 무시하고 로그를 남깁니다. 자리 번호가 없는 옛 알림에서 온 요청은 지금 울리는 것으로 봅니다 — 그러지 않으면 그 버튼이 아무 일도 하지 않는 버튼이 됩니다.

밀려난 알람에도 다시 알림을 붙였습니다. 종전에는 조용한 알림 한 줄만 남고 끄기도 다시 알림도 없어서, 그 일정은 다시 울릴 기회가 아예 없었습니다. 겹친 순간에 뒤에 온 알람이 앞의 것을 통째로 삼킨 셈이었습니다. 서비스가 그 알람을 더 이상 들고 있지 않으므로 필요한 값을 전부 요청에 실어 보내고, 미룬 뒤에는 그 알림을 지웁니다.

📷 Screenshot

전체 화면 알람은 XML 레이아웃이라 스크린샷 테스트 대상이 아닙니다. baseline 변화 없습니다.

💬 To Reviewers

  • 로컬 검증: ktlintFormat · testDebugUnitTest(전 모듈 119개 통과) · :app:lintDebug 초록입니다.
  • 밀려난 알람의 다시 알림 자리 번호는 울리는 쪽(0·1·2)과 겹치지 않게 10,000 을 더해 띄웠습니다. 알람마다 자기 자리 번호를 더하므로 겹친 알람이 여럿이어도 서로 덮지 않습니다.
  • 실기기 확인 항목입니다. 같은 분에 알람 둘을 걸고 화면이 켜진 상태에서 「다시 알림」 을 눌렀을 때 화면에 보이던 일정이 미뤄지는지, 밀려난 알람의 알림에서도 미룰 수 있는지. fix: 실기기에서 알람이 전혀 울리지 않는다 #122 목록에 더하겠습니다.

@OnlyReadOneBook
OnlyReadOneBook merged commit 454461d into main Sep 6, 2026
11 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the feat/167 branch September 6, 2026 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: 겹친 알람에서 다시 알림·끄기가 화면에 보이는 일정에 걸리지 않는다

1 participant