51 lines
2.4 KiB
Markdown
51 lines
2.4 KiB
Markdown
---
|
|
name: push-notification
|
|
description: FCM 기반 푸시 알림 수신, 표시, ACK 처리 담당 (Core Domain)
|
|
type: core
|
|
---
|
|
|
|
# Push Notification
|
|
|
|
## 목적 / 책임
|
|
- Firebase Cloud Messaging(FCM) 메시지 수신 및 처리
|
|
- 포그라운드/백그라운드/종료 상태별 알림 표시
|
|
- 알림 수신 ACK를 Mattermost 서버로 전달
|
|
- Flutter ↔ Android 간 이벤트 채널 통신
|
|
|
|
## 포함 경로
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/MattermostFirebaseMessagingService.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/helpers/CustomPushNotificationHelper.java`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/helpers/NotificationHelper.kt`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/NotificationReplyBroadcastReceiver.java`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/NotificationDismissService.java`
|
|
- `android/app/src/main/java/com/tokilabs/mattermost/ReceiptDelivery.java`
|
|
- `lib/services/push_notification_service.dart`
|
|
- `lib/services/push_notification_background.dart`
|
|
|
|
## 제외 경로
|
|
- `lib/` 내 UI 화면 관련 코드 (flutter-app 도메인)
|
|
- `android/.../db/` (database 도메인)
|
|
- `android/.../helpers/Network.kt` (network 도메인)
|
|
|
|
## 주요 구성 요소
|
|
- `MattermostFirebaseMessagingService`: FCM 메시지 수신 진입점, 포그라운드/백그라운드 분기
|
|
- `CustomPushNotificationHelper`: 알림 UI 빌드, 아바타 이미지 처리
|
|
- `NotificationHelper`: 알림 ID, 그룹 요약 관리
|
|
- `ReceiptDelivery`: `/api/v4/notifications/ack` ACK 전송
|
|
- `PushNotificationService`: Flutter 싱글톤 서비스, EventChannel 수신
|
|
- `push_notification_background.dart`: 백그라운드 FCM 핸들러
|
|
|
|
## 유지할 패턴
|
|
- FCM 수신 → `MattermostFirebaseMessagingService` → `CustomPushNotificationHelper` 흐름
|
|
- EventChannel을 통한 Android → Flutter 이벤트 전달
|
|
- 알림 표시 전 반드시 ACK 전송 (`ReceiptDelivery`)
|
|
- Singleton 패턴: `PushNotificationService.instance`
|
|
|
|
## 다른 도메인과의 경계
|
|
- **database**: push-notification은 알림 데이터를 읽기만 하고, DB 스키마/쿼리 구현은 database 도메인
|
|
- **network**: HTTP 통신 구현은 network 도메인의 `Network.kt` 사용
|
|
- **flutter-app**: 알림 탭 시 화면 라우팅은 flutter-app 도메인
|
|
|
|
## 금지 사항
|
|
- DB 스키마 변경을 이 도메인에서 직접 하지 않는다.
|
|
- 알림 채널 설정은 `MainApplication.kt`(android-native 도메인)에서 한다.
|