작업 개요
오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.
1. AGENTS.md 정리
작업 내용
- 기존 루트
AGENTS.md를 기준으로 코드 구조를 다시 확인했다. - 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.
- 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.
## 한국어 요약 메모섹션을 추가하고, 항목별로###제목과 불릿 목록으로 정돈했다.
정리한 주요 항목
- Compose
- Hilt
- Room Database 미사용(raw SQLite 사용)
- AI / Cloud Function 호출 흐름
- API / 외부 연동
- 알림 / 수집 흐름
- WorkManager / 백그라운드
- 테스트 현황
- 작업 시 주의점
2. 일일 알림 기능 점검 및 구현
기존 구조 확인 결과
- 설정 화면에는
alarmTime선택 기능이 이미 존재했다. - 기존 알림 로직은
SettingsActivity2.kt+WorkDefLib.kt중심의 WorkManager 흐름이었다. - 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다. - 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.
구현/수정 내용
core/DailyReminderScheduler.kt신규 추가AlarmManager기반으로 다음 일일 알림 시간을 예약하도록 구성- 저장된
alarmTime값을 기준으로 다음 실행 시각 계산 - 오늘 대상 데이터가 있을 때만 알림 노출
core/DailyReminderReceiver.kt신규 추가- 일일 알림 브로드캐스트 수신
- 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리
AndroidManifest.xml수정RECEIVE_BOOT_COMPLETED권한 추가DailyReminderReceiver등록
presentation/option/SettingsActivity2.kt수정- 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화
presentation/composes/SettingScreen.kt수정- 설정 저장 시
alarmTime변경값으로 즉시 재예약되도록 반영
- 설정 저장 시
ComposeMainActivity.kt수정- 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리
core/WorkDefLib.kt수정- 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화
- 문자열 리소스 추가
- 일일 알림 채널명, 제목, 본문 문구 추가
values-ko/strings.xml에도 한국어 번역 반영
3. 알림 동작 기준
- 매일 사용자가 설정한 시각에 체크하도록 예약
- 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회
- 대상이 있을 때만 시스템 알림 표시
- 알림 클릭 시
ComposeMainActivity로 진입하도록 구성 - 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성
4. 검증 결과
코드/구조 점검
- 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.
- 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.
- 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.
빌드 확인
아래 빌드를 직접 확인했다.
:app:compileDebugKotlin성공:app:assembleDebug성공
5. 오늘 작업한 주요 파일
AGENTS.mdapp/src/main/AndroidManifest.xmlapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.ktapp/src/main/java/com/nari/notify2kakao/core/WorkDefLib.ktapp/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
6. 메모
- 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.
- 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.
- 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.
2026-04-03 작업 이력
작업 개요
오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.
2026-04-03 추가 반영: 이후 후속 정리를 진행하면서
SettingsActivity2.kt,settings_activity.xml,root_preferences.xml,activity_setting.xml,core/kakao/kakaoToast.kt,view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.
1. 당시 기준 XML 사용 지점 정리
실제 사용 중인 layout
app/src/main/res/layout/settings_activity.xmlpresentation/option/SettingsActivity2.kt에서setContentView(...)로 사용- 설정용
PreferenceFragmentCompat를 담는 컨테이너 역할
app/src/main/res/layout/notify_setting.xmlLoginActivity.kt에서NotifySettingBinding으로 사용- 알림 권한 안내 다이얼로그 내부 이미지 영역
app/src/main/res/layout/view_toast.xmlcore/kakao/kakaoToast.kt에서 inflate 하여 사용- 커스텀 Toast + 광고 배너 표시 역할
XML 기반 설정 리소스
app/src/main/res/xml/root_preferences.xmlSettingsActivity2.kt의PreferenceFragmentCompat에서 사용kakao_use_ty,monthlydate,alarmTime설정 항목 관리
정리 후보
app/src/main/res/layout/activity_setting.xml- 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML
- 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리
2. 당시 기준 Compose 전환 방향
1단계: 로그인 권한 안내 XML 제거
notify_setting.xml기반 다이얼로그를 ComposeAlertDialog로 전환LoginActivity.kt내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성- 로그인 화면을 Compose 흐름으로 더 일관되게 정리
2단계: 설정 화면 XML 의존 축소
- 현재
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml조합을 우선 유지하면서 동작을 정리 - 이후
presentation/composes/SettingScreen.kt쪽으로 설정 UI를 점진적으로 이동 - 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토
3단계: 커스텀 Toast 구조 개선
view_toast.xml기반 커스텀 Toast 사용 범위를 재검토- 단순 안내 메시지는 Compose
Snackbar또는 화면 내 상태 기반 메시지로 대체 검토 - 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함
4단계: 미사용 XML 정리
activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거- XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검
3. 전환 시 주의사항
- 기존
SharedPreferences키(kakao_use_ty,monthlydate,alarmTime)는 그대로 유지하는 방향이 안전함 - 설정 화면 전환 시 현재
SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함 - 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함
- Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함
4. 메모
- 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.
- 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.
5. 다음 작업 TODO
-
LoginActivity.kt의NotifySettingBinding기반 권한 안내 다이얼로그를 ComposeAlertDialog로 전환 -
notify_setting.xml제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인 -
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml구조를SettingScreen.kt중심으로 통합할 수 있는지 설계 정리 - 설정 화면 전환 시
kakao_use_ty,monthlydate,alarmTime저장 키를 그대로 유지하도록 검토 - 설정 저장 이후
DailyReminderScheduler.schedule(...)재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검 -
core/kakao/kakaoToast.kt의view_toast.xml사용 부분을 정리하고 로그인 오류 안내를 기본Toast로 단순화 - 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거
-
activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정 - XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검
6. 추가 진행 내용
커스텀 Toast / XML 정리
LoginActivity.kt에서 카카오 로그인 실패 안내를kakaoToast.makeToast(...)대신 기본Toast.makeText(...)로 변경했다.- 더 이상 사용되지 않는
core/kakao/kakaoToast.kt를 제거했다. - 마지막으로 남아 있던 레이아웃 리소스
res/layout/view_toast.xml를 삭제했다. - 정리 후 프로젝트 내
view_toast,kakaoToast,SettingsActivity2,root_preferences,activity_setting참조가 남아 있지 않음을 다시 확인했다.
문서 최신화 메모
AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.- 설정 관련 진입점은
SettingsActivity2.kt기준 설명에서presentation/composes/SettingScreen.kt기준 설명으로 정리했다. - 로그인 오류 안내는 제거된
kakaoToast.kt대신LoginActivity.kt의 기본Toast흐름을 따라가면 되도록 문서를 맞췄다.
7. 일일 알림 후속 보완
보완 배경
- 기존 일일 알림은
DailyReminderScheduler.kt에서 오늘 날짜의withdrawList만 조회하고 있었다. - 따라서 월 반복 데이터가
withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.
보완 내용
core/DailyReminderScheduler.kt수정- 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.
- 알림 판단 전에
withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다. - 해당 항목이 오늘
withdrawList에 아직 없으면 자동으로withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다. - 알림 본문은 건수/합계 외에
remark일부가 함께 보이도록BigText내용을 보강했다.
data/dbHandler/DBHandler.kt수정withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록selectWithDrawMonthlyByDay(...)조회 메서드를 추가했다.
확인 결과
- 이제 매일 설정된 알림 시간에 실행될 때
withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다. withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록chkWithDraw(...)검사를 유지했다.- 수정 후
:app:assembleDebug빌드 성공을 확인했다.
2026-04-07 작업 이력
작업 개요
오늘은 알림 관련 권한을 알림 수집과 알림 표시로 분리해서 다시 정리하고,ComposeMainActivity와 SettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.
1. 알림 권한 구조 정리
작업 내용
- 기존에는 메인 진입 시 권한 체크가
Notification Listener중심으로만 해석될 수 있는 구조였다. - 이번에는 권한을 아래 3가지 상태로 분리했다.
알림 수집 권한:Notification Listener허용 여부알림 표시 권한: Android 13+POST_NOTIFICATIONS허용 여부앱 알림 사용: 시스템에서 앱 알림 자체가 차단되었는지 여부
DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.
2. ComposeMainActivity 권한 안내 개선
작업 내용
- 알림 권한 확인 책임을 로그인 화면이 아닌
ComposeMainActivity.kt에 두도록 정리했다. - 메인 진입/복귀 시점(
onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다. - 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.
- 알림 수집 권한이 없으면
알림 접근 설정이동 - 알림 표시 권한이 없으면
POST_NOTIFICATIONS런타임 요청 - 앱 알림이 꺼져 있으면
앱 알림 설정이동
- 알림 수집 권한이 없으면
- 관련 안내 문구를
values/strings.xml,values-ko/strings.xml에 추가했다.
3. SettingScreen 상태 표시 확장
작업 내용
- 설정 화면의
일일 알림 상태카드에서 기존 단일알림 권한표기를 세분화했다. - 현재는 아래 항목을 각각 확인할 수 있다.
- 선택된 알림 시간
- 알림 수집 권한
- 알림 표시 권한
- 앱 알림 사용
- 정확 알람 사용 여부
- 마지막 예약/실행/표시 시간
- 최종 상태
- 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.
알림 접근 설정알림 권한 요청앱 알림 설정
4. 수정 파일
app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
5. 검증 결과
- 수정 후
:app:compileDebugKotlin빌드 성공을 확인했다. - 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.
- 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.# 2026-04-02 작업 이력
작업 개요
오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.
1. AGENTS.md 정리
작업 내용
- 기존 루트
AGENTS.md를 기준으로 코드 구조를 다시 확인했다. - 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.
- 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.
## 한국어 요약 메모섹션을 추가하고, 항목별로###제목과 불릿 목록으로 정돈했다.
정리한 주요 항목
- Compose
- Hilt
- Room Database 미사용(raw SQLite 사용)
- AI / Cloud Function 호출 흐름
- API / 외부 연동
- 알림 / 수집 흐름
- WorkManager / 백그라운드
- 테스트 현황
- 작업 시 주의점
2. 일일 알림 기능 점검 및 구현
기존 구조 확인 결과
- 설정 화면에는
alarmTime선택 기능이 이미 존재했다. - 기존 알림 로직은
SettingsActivity2.kt+WorkDefLib.kt중심의 WorkManager 흐름이었다. - 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다. - 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.
구현/수정 내용
core/DailyReminderScheduler.kt신규 추가AlarmManager기반으로 다음 일일 알림 시간을 예약하도록 구성- 저장된
alarmTime값을 기준으로 다음 실행 시각 계산 - 오늘 대상 데이터가 있을 때만 알림 노출
core/DailyReminderReceiver.kt신규 추가- 일일 알림 브로드캐스트 수신
- 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리
AndroidManifest.xml수정RECEIVE_BOOT_COMPLETED권한 추가DailyReminderReceiver등록
presentation/option/SettingsActivity2.kt수정- 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화
presentation/composes/SettingScreen.kt수정- 설정 저장 시
alarmTime변경값으로 즉시 재예약되도록 반영
- 설정 저장 시
ComposeMainActivity.kt수정- 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리
core/WorkDefLib.kt수정- 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화
- 문자열 리소스 추가
- 일일 알림 채널명, 제목, 본문 문구 추가
values-ko/strings.xml에도 한국어 번역 반영
3. 알림 동작 기준
- 매일 사용자가 설정한 시각에 체크하도록 예약
- 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회
- 대상이 있을 때만 시스템 알림 표시
- 알림 클릭 시
ComposeMainActivity로 진입하도록 구성 - 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성
4. 검증 결과
코드/구조 점검
- 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.
- 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.
- 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.
빌드 확인
아래 빌드를 직접 확인했다.
:app:compileDebugKotlin성공:app:assembleDebug성공
5. 오늘 작업한 주요 파일
AGENTS.mdapp/src/main/AndroidManifest.xmlapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.ktapp/src/main/java/com/nari/notify2kakao/core/WorkDefLib.ktapp/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
6. 메모
- 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.
- 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.
- 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.
2026-04-03 작업 이력
작업 개요
오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.
2026-04-03 추가 반영: 이후 후속 정리를 진행하면서
SettingsActivity2.kt,settings_activity.xml,root_preferences.xml,activity_setting.xml,core/kakao/kakaoToast.kt,view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.
1. 당시 기준 XML 사용 지점 정리
실제 사용 중인 layout
app/src/main/res/layout/settings_activity.xmlpresentation/option/SettingsActivity2.kt에서setContentView(...)로 사용- 설정용
PreferenceFragmentCompat를 담는 컨테이너 역할
app/src/main/res/layout/notify_setting.xmlLoginActivity.kt에서NotifySettingBinding으로 사용- 알림 권한 안내 다이얼로그 내부 이미지 영역
app/src/main/res/layout/view_toast.xmlcore/kakao/kakaoToast.kt에서 inflate 하여 사용- 커스텀 Toast + 광고 배너 표시 역할
XML 기반 설정 리소스
app/src/main/res/xml/root_preferences.xmlSettingsActivity2.kt의PreferenceFragmentCompat에서 사용kakao_use_ty,monthlydate,alarmTime설정 항목 관리
정리 후보
app/src/main/res/layout/activity_setting.xml- 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML
- 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리
2. 당시 기준 Compose 전환 방향
1단계: 로그인 권한 안내 XML 제거
notify_setting.xml기반 다이얼로그를 ComposeAlertDialog로 전환LoginActivity.kt내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성- 로그인 화면을 Compose 흐름으로 더 일관되게 정리
2단계: 설정 화면 XML 의존 축소
- 현재
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml조합을 우선 유지하면서 동작을 정리 - 이후
presentation/composes/SettingScreen.kt쪽으로 설정 UI를 점진적으로 이동 - 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토
3단계: 커스텀 Toast 구조 개선
view_toast.xml기반 커스텀 Toast 사용 범위를 재검토- 단순 안내 메시지는 Compose
Snackbar또는 화면 내 상태 기반 메시지로 대체 검토 - 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함
4단계: 미사용 XML 정리
activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거- XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검
3. 전환 시 주의사항
- 기존
SharedPreferences키(kakao_use_ty,monthlydate,alarmTime)는 그대로 유지하는 방향이 안전함 - 설정 화면 전환 시 현재
SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함 - 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함
- Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함
4. 메모
- 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.
- 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.
5. 다음 작업 TODO
-
LoginActivity.kt의NotifySettingBinding기반 권한 안내 다이얼로그를 ComposeAlertDialog로 전환 -
notify_setting.xml제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인 -
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml구조를SettingScreen.kt중심으로 통합할 수 있는지 설계 정리 - 설정 화면 전환 시
kakao_use_ty,monthlydate,alarmTime저장 키를 그대로 유지하도록 검토 - 설정 저장 이후
DailyReminderScheduler.schedule(...)재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검 -
core/kakao/kakaoToast.kt의view_toast.xml사용 부분을 정리하고 로그인 오류 안내를 기본Toast로 단순화 - 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거
-
activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정 - XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검
6. 추가 진행 내용
커스텀 Toast / XML 정리
LoginActivity.kt에서 카카오 로그인 실패 안내를kakaoToast.makeToast(...)대신 기본Toast.makeText(...)로 변경했다.- 더 이상 사용되지 않는
core/kakao/kakaoToast.kt를 제거했다. - 마지막으로 남아 있던 레이아웃 리소스
res/layout/view_toast.xml를 삭제했다. - 정리 후 프로젝트 내
view_toast,kakaoToast,SettingsActivity2,root_preferences,activity_setting참조가 남아 있지 않음을 다시 확인했다.
문서 최신화 메모
AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.- 설정 관련 진입점은
SettingsActivity2.kt기준 설명에서presentation/composes/SettingScreen.kt기준 설명으로 정리했다. - 로그인 오류 안내는 제거된
kakaoToast.kt대신LoginActivity.kt의 기본Toast흐름을 따라가면 되도록 문서를 맞췄다.
7. 일일 알림 후속 보완
보완 배경
- 기존 일일 알림은
DailyReminderScheduler.kt에서 오늘 날짜의withdrawList만 조회하고 있었다. - 따라서 월 반복 데이터가
withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.
보완 내용
core/DailyReminderScheduler.kt수정- 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.
- 알림 판단 전에
withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다. - 해당 항목이 오늘
withdrawList에 아직 없으면 자동으로withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다. - 알림 본문은 건수/합계 외에
remark일부가 함께 보이도록BigText내용을 보강했다.
data/dbHandler/DBHandler.kt수정withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록selectWithDrawMonthlyByDay(...)조회 메서드를 추가했다.
확인 결과
- 이제 매일 설정된 알림 시간에 실행될 때
withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다. withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록chkWithDraw(...)검사를 유지했다.- 수정 후
:app:assembleDebug빌드 성공을 확인했다.
2026-04-07 작업 이력
작업 개요
오늘은 알림 관련 권한을 알림 수집과 알림 표시로 분리해서 다시 정리하고,ComposeMainActivity와 SettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.
1. 알림 권한 구조 정리
작업 내용
- 기존에는 메인 진입 시 권한 체크가
Notification Listener중심으로만 해석될 수 있는 구조였다. - 이번에는 권한을 아래 3가지 상태로 분리했다.
알림 수집 권한:Notification Listener허용 여부알림 표시 권한: Android 13+POST_NOTIFICATIONS허용 여부앱 알림 사용: 시스템에서 앱 알림 자체가 차단되었는지 여부
DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.
2. ComposeMainActivity 권한 안내 개선
작업 내용
- 알림 권한 확인 책임을 로그인 화면이 아닌
ComposeMainActivity.kt에 두도록 정리했다. - 메인 진입/복귀 시점(
onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다. - 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.
- 알림 수집 권한이 없으면
알림 접근 설정이동 - 알림 표시 권한이 없으면
POST_NOTIFICATIONS런타임 요청 - 앱 알림이 꺼져 있으면
앱 알림 설정이동
- 알림 수집 권한이 없으면
- 관련 안내 문구를
values/strings.xml,values-ko/strings.xml에 추가했다.
3. SettingScreen 상태 표시 확장
작업 내용
- 설정 화면의
일일 알림 상태카드에서 기존 단일알림 권한표기를 세분화했다. - 현재는 아래 항목을 각각 확인할 수 있다.
- 선택된 알림 시간
- 알림 수집 권한
- 알림 표시 권한
- 앱 알림 사용
- 정확 알람 사용 여부
- 마지막 예약/실행/표시 시간
- 최종 상태
- 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.
알림 접근 설정알림 권한 요청앱 알림 설정
4. 수정 파일
app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
5. 검증 결과
- 수정 후
:app:compileDebugKotlin빌드 성공을 확인했다. - 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.
- 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
| Han Tarot (타로가 한복을 입었다 ?) 앱 사용자 설명서 (0) | 2026.03.30 |
|---|---|
| 자기 성찰 타로 상담 앱 실행 로드맵 (MVP 기준, AI 적용준비 포함) (0) | 2026.03.29 |
| 자기 성찰 타로 상담 앱 실행 로드맵 (MVP 기준, 업데이트 #1) (1) | 2026.03.27 |
| Han Tarot 다음 개발 스텝 정리 (HomeScreen 이후) (0) | 2026.03.23 |
| Han Tarot 앱 개발 기획안 (수정버전) (0) | 2026.03.21 |