[Feature] FCM 발송 모듈 구현 (Firebase Cloud Messaging) #104

Closed
opened 2026-02-10 06:41:42 +00:00 by seonkyu.kim · 0 comments
Owner

📋 개요

Firebase Admin SDK를 사용하여 Android 디바이스에 푸시를 발송하는 모듈을 구현합니다.
PushWorker(#9)의 선행 작업으로, FCM HTTP v1 API 기반 발송 및 에러 처리를 포함합니다.

📐 설계

  • Interface: IFcmSender (Application Layer)
  • Implementation: FcmSender (Infrastructure Layer, Firebase Admin SDK)
  • 배치 발송 500건 단위
  • Service별 Firebase 인스턴스 관리 (멀티테넌시)

체크리스트

Application Layer

  • IFcmSender.cs — FCM 발송 인터페이스
  • PushResultDto.cs — 발송 결과 DTO

Infrastructure Layer

  • FcmSender.cs — Firebase Admin SDK 연동
  • Service별 Firebase 인스턴스 관리
  • DI 등록

에러 처리

  • FCM 응답 코드별 처리 로직
  • Unregistered → Device 삭제
  • InvalidArgument/SenderIdMismatch → Device 삭제
  • Unavailable/Internal/QuotaExceeded → 재시도

검증

  • 빌드 확인 (0 errors, 0 warnings)

📎 참고

  • Milestone: Phase 3 (v0.4.0)
  • PushWorker(#9)가 이 모듈을 사용하여 실제 발송 수행
## 📋 개요 Firebase Admin SDK를 사용하여 Android 디바이스에 푸시를 발송하는 모듈을 구현합니다. PushWorker(#9)의 선행 작업으로, FCM HTTP v1 API 기반 발송 및 에러 처리를 포함합니다. ## 📐 설계 - Interface: `IFcmSender` (Application Layer) - Implementation: `FcmSender` (Infrastructure Layer, Firebase Admin SDK) - 배치 발송 500건 단위 - Service별 Firebase 인스턴스 관리 (멀티테넌시) ## ✅ 체크리스트 ### Application Layer - [x] `IFcmSender.cs` — FCM 발송 인터페이스 - [x] `PushResultDto.cs` — 발송 결과 DTO ### Infrastructure Layer - [x] `FcmSender.cs` — Firebase Admin SDK 연동 - [x] Service별 Firebase 인스턴스 관리 - [x] DI 등록 ### 에러 처리 - [x] FCM 응답 코드별 처리 로직 - [x] Unregistered → Device 삭제 - [x] InvalidArgument/SenderIdMismatch → Device 삭제 - [x] Unavailable/Internal/QuotaExceeded → 재시도 ### 검증 - [x] 빌드 확인 (0 errors, 0 warnings) ## 📎 참고 - Milestone: Phase 3 (v0.4.0) - PushWorker(#9)가 이 모듈을 사용하여 실제 발송 수행
seonkyu.kim added the
Priority
Urgent
Status
In Progress
Type
Feature
labels 2026-02-10 06:41:49 +00:00
seonkyu.kim self-assigned this 2026-02-10 06:41:52 +00:00
seonkyu.kim added this to the Phase 3: 메시지 & Push Core milestone 2026-02-10 06:41:55 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 06:49:56 +00:00
Sign in to join this conversation.
No description provided.