Skip to content

[Refactor] FCM 토큰 등록 경로를 워커로 통합 - #575

Merged
edv-Shin merged 1 commit into
devfrom
refactor/fcm-registration-worker-569
Aug 16, 2026
Merged

[Refactor] FCM 토큰 등록 경로를 워커로 통합#575
edv-Shin merged 1 commit into
devfrom
refactor/fcm-registration-worker-569

Conversation

@edv-Shin

Copy link
Copy Markdown
Contributor

#️⃣연관된 이슈

ex) #이슈번호, #이슈번호

Closes#569

📝작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

FCM 토큰 등록이 앱 진입 경로와 워커 두 갈래로 나뉘어 있던 것을 워커 하나로 모았습니다. 재시도와 백오프, 프로세스 종료 후 재개를 WorkManager가 맡습니다.

FcmTokenSyncScheduler 추가

  • 예약과 취소를 domain 인터페이스로 두고 app 모듈에서 WorkManager로 구현
  • 기존 TimerManager와 같은 패턴
  • 워커 클래스가 app 모듈에 있어 feature/profile의 로그아웃 경로에서 직접 참조할 수 없음

MainViewModel은 라우팅만 담당

  • routeByAuth()가 등록을 직접 부르지 않고 워커를 예약
  • registrationPending, registrationJob 제거
  • 재연결 시 등록 재시도 제거. WorkManager가 이미 하는 일을 손으로 다시 구현한 것이었음
  • 진입 직후 토큰이 갱신돼도 unique work라 요청이 한 번만 나감

로그아웃 시 예약 취소

  • ClearSessionUseCase가 세션 정리 후 cancel() 호출
  • 사용자 로그아웃(SettingFragment.performLogout)과 강제 로그아웃(MainViewModel.transitionToLogin)이 둘 다 이 유스케이스를 거침

재시도 상한 5회 → 10회

  • 진입 경로가 사라져 워커가 유일한 등록 통로가 됨
  • 30초 지수 백오프 기준 마지막 시도까지 약 8분에서 4시간대로

테스트

FcmTokenSyncPolicyTest

  • 토큰 갱신이 일시 실패하면 재시도
  • invalid_grant면 첫 시도라도 재시도하지 않음
  • 갱신 실패도 상한에 닿으면 재시도하지 않음

MainViewModelTest

  • 진입에서 예약 1회, 재연결에는 다시 예약하지 않음
  • 미인증 / 회원ID 없음 / 강제 업데이트 / invalid_grant일 때 예약하지 않음
  • 제거된 재시도 경로 테스트 4개 삭제

ClearSessionUseCaseTest

  • 세션 정리 시 예약된 등록을 취소

스크린샷 (선택)

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

취소를 부르는 자리를 ClearSessionUseCase로 잡았습니다. 이슈에는 "로그아웃 시"라고만 적었는데 사용자 로그아웃과 강제 로그아웃이 둘 다 이 유스케이스를 거쳐서 한 곳에 넣으면 두 경로가 함께 덮입니다. 로그아웃 유스케이스 쪽에 두는 편이 나을지 봐주세요.

재시도 상한은 올리기만 하고 주기 워커는 넣지 않았습니다. 주기 워커를 두면 등록 완료 시 취소하는 경로까지 함께 얹어야 해서 이 PR 범위를 넘어섭니다. 10회로 부족하다고 보시면 알려주세요.

워커의 만료 토큰 선갱신 분기는 CoroutineWorker 안이라 JVM 테스트가 안 됩니다. 갱신 실패 판단만 FcmTokenSyncPolicy.shouldRetryAfterRefreshFailure()로 빼서 테스트로 덮었고, 워커 전체를 감싸는 클래스를 새로 만드는 쪽은 침습이 커서 하지 않았습니다.

수동 확인은 아직입니다. 실기기가 필요한 항목들입니다.

  • 진입 직후 토큰 갱신이 겹쳐도 요청이 한 번만 나가는지
  • 오프라인 진입 후 재연결 시 등록되는지
  • 강제 업데이트 화면에 머물다 진입해도 등록되는지

@edv-Shinedv-Shin self-assigned this Aug 16, 2026
진입 경로와 워커가 같은 일을 두 갈래로 하던 것을 워커 하나로 모읍니다.
재시도와 백오프, 프로세스 종료 후 재개를 WorkManager가 맡습니다.
@edv-Shin
edv-Shinforce-pushed the refactor/fcm-registration-worker-569 branch from 408a85d to 8dd9ee5CompareAugust 16, 2026 03:53
@edv-Shin
edv-Shin merged commit 39f34d4 into devAug 16, 2026
1 check passed
Sign up for freeto 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.

[Refactor] FCM 토큰 등록 경로를 워커로 통합

1 participant

@edv-Shin