Co-authored-by: Azareth-Tr <Azareth-Tr@users.noreply.github.com> Co-authored-by: eddgranados12 <eddgranados12@users.noreply.github.com> configuracion inicial para supoabase y endpoints
47 lines
2.8 KiB
Markdown
47 lines
2.8 KiB
Markdown
# Firebase setup for Recolecta project
|
|
|
|
This document explains the manual steps to create a Firebase project, register Android/iOS apps, obtain the Admin SDK credentials for backend (FCM), and connect the Flutter app.
|
|
|
|
1) Create a Firebase project
|
|
- Go to https://console.firebase.google.com/ and create a new project (e.g., `recolecta-demo`).
|
|
|
|
2) Register Android app
|
|
- In the Firebase console, add an Android app. Use the app package name that matches your Flutter app (check `android/app/src/main/AndroidManifest.xml` or `android/app/build.gradle` `applicationId`).
|
|
- Download `google-services.json` and place it in the Flutter project at `recolecta_app/android/app/google-services.json`.
|
|
- Update `android/build.gradle` and `android/app/build.gradle` if needed (standard Flutter - Firebase steps). See https://firebase.flutter.dev/docs/overview/#installation
|
|
|
|
3) Register iOS app
|
|
- Add an iOS app in Firebase, set the iOS bundle id from your Flutter project (check `ios/Runner.xcodeproj`), download `GoogleService-Info.plist` and add it to `recolecta_app/ios/Runner/GoogleService-Info.plist` (open Xcode and add to Runner target).
|
|
|
|
4) Enable Cloud Messaging
|
|
- In Firebase console go to Cloud Messaging and ensure that your app is configured.
|
|
|
|
5) Obtain Admin SDK credentials (Backend)
|
|
- In Firebase Console: Project Settings → Service Accounts → Generate new private key.
|
|
- This downloads a JSON file like `recolecta-adminsdk-xxxxx.json`.
|
|
- Copy that file to the backend secrets folder: `backend/secrets/firebase-adminsdk.json` (create `backend/secrets/` if missing).
|
|
- IMPORTANT: do NOT commit this file to git. `backend/.gitignore` already excludes `secrets/`.
|
|
|
|
6) Set environment variable for backend
|
|
- Set `FIREBASE_CREDENTIALS_PATH` to the path where you placed the JSON, example in `.env`:
|
|
|
|
```
|
|
FIREBASE_CREDENTIALS_PATH=backend/secrets/firebase-adminsdk.json
|
|
```
|
|
|
|
7) Flutter configuration (pubspec)
|
|
- Add `firebase_core` and `firebase_messaging` to `recolecta_app/pubspec.yaml` and run `flutter pub get`.
|
|
- Initialize Firebase in Flutter `main()` per docs: `WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp();`
|
|
- Subscribe the citizen client to the route topic after confirming their `routeId`:
|
|
|
|
```dart
|
|
FirebaseMessaging.instance.subscribeToTopic('topic_RUTA-01');
|
|
```
|
|
|
|
8) Testing push (backend)
|
|
- The backend contains `app/services/notifications.py` which will use the Admin SDK if `FIREBASE_CREDENTIALS_PATH` is set and the file exists. Otherwise it falls back to a mock that prints messages.
|
|
- Start backend and trigger `POST /simulate/tick` to see mock pushes or real pushes if Admin SDK is configured.
|
|
|
|
9) Security note
|
|
- Keep the Admin SDK JSON secret. Use environment-managed secrets in production (Cloud Run secret manager, etc.).
|