# Android FCM 설정 (goldenApp / goldenanalysisapp) 기존 **goldenApp** (`~/dev/goldenAnalysis/goldenApp`) 과 동일 Firebase 프로젝트를 사용합니다. ## 1. Firebase Console 1. [Firebase Console](https://console.firebase.google.com/) → 프로젝트 **goldenanalysisapp** 2. **앱 추가** → Android 3. 패키지 이름: `com.goldenchart.app` (Capacitor `applicationId` 와 동일) 4. `google-services.json` 다운로드 ## 2. 프로젝트에 배치 ```bash # 권장: repo 루트 app/google-services.json (com.goldenchart.app 포함) cp ~/Downloads/google-services.json app/google-services.json ./scripts/ensure-android-google-services.sh # 또는 한 번에 ./scripts/setup-android-fcm.sh ~/Downloads/google-services.json ``` 빌드 시 `ensure-android-google-services.sh` 가 `app/google-services.json` 을 `app/android/app/google-services.json` 으로 복사합니다. **이 파일이 없으면** 알림 권한 허용 직후 `PushNotifications.register()` 에서 **앱이 종료**될 수 있습니다. ## 3. 빌드 ```bash npm run cap:sync cd app/android && ./gradlew assembleRelease ``` `google-services.json` 이 없으면 Gradle 로그에 `google-services plugin not applied` 가 나오며 **푸시가 동작하지 않습니다**. ## 4. 서버 (exdev) - `FIREBASE_ENABLED=true` - `firebase-service-account.json` (goldenanalysisapp 서비스 계정) - 앱 설정에서 **FCM 푸시** ON (`fcm_push_enabled`) ## 5. 앱에서 확인 1. **2.4 이상 APK** 설치 (`google-services.json` 포함 빌드 필수) 2. 크래시가 반복되면 **앱 삭제 후 재설치** (이전에 허용한 알림 권한 초기화) 3. 로그인 → **설정 → FCM 푸시** ON 4. **「알림 허용 · FCM 등록」** 버튼 → 시스템 팝업에서 허용 (2초 후 등록) 5. **테스트 발송** 으로 확인 로그인·메인 진입 시에는 **알림 권한을 절대 요청하지 않습니다** (2.3+). FCM 푸시 토글 ON → **「알림 허용 · FCM 등록」** 버튼을 눌렀을 때만 권한 팝업이 뜹니다. ## goldenApp 과의 차이 | 항목 | goldenApp | GoldenChart (Capacitor) | |------|-----------|-------------------------| | 패키지 | `com.golden.app` | `com.goldenchart.app` | | FCM SDK | 직접 Firebase Messaging | 앱 내장 `GoldenFcm` 플러그인 (Capacitor Push 미사용) | | 토큰 등록 | `POST /api/fcm/token` | 동일 (`registerFcmToken`) | | 알림 채널 | `golden_alerts` | `goldenchart_trade_signals` | 로그인 사용자는 **userId** 기준으로 FCM 토큰을 조회하므로, 웹·모바일 deviceId 가 달라도 푸시를 받을 수 있습니다.