6.2 KiB
6.2 KiB
Firebase Setup Guide for Debartis Fire Detection
Langkah-langkah Setup Firebase
1. Buat Project Firebase
- Buka Firebase Console
- Klik "Add project" atau "Tambah project"
- Masukkan nama project:
debartis-fire-detection
- Ikuti langkah-langkah setup hingga selesai
2. Enable Authentication
- Di Firebase Console, pilih project
debartis-fire-detection
- Pilih "Authentication" di sidebar
- Pilih tab "Sign-in method"
- Enable "Email/Password" authentication
- Klik "Save"
3. Setup Firestore Database
- Pilih "Firestore Database" di sidebar
- Klik "Create database"
- Pilih "Start in test mode" (untuk development)
- Pilih lokasi server (pilih yang paling dekat dengan lokasi Anda)
- Klik "Done"
4. Setup Storage
- Pilih "Storage" di sidebar
- Klik "Get started"
- Gunakan default rules untuk sekarang
- Pilih lokasi yang sama dengan Firestore
- Klik "Done"
5. Add Flutter App ke Firebase Project
- Di Firebase Console, klik ikon Flutter (atau Add app > Flutter)
- Masukkan informasi berikut:
- Apple bundle ID:
com.example.debartis
- Android package name:
com.example.debartis
- App nickname:
Debartis Fire Detection
- Apple bundle ID:
6. Download Configuration Files
- Download
google-services.json
untuk Android - Download
GoogleService-Info.plist
untuk iOS - Tempatkan file tersebut di lokasi yang sesuai:
- Android:
android/app/google-services.json
- iOS:
ios/Runner/GoogleService-Info.plist
- Android:
7. Update firebase_options.dart
- Buka file
lib/firebase_options.dart
- Ganti semua placeholder dengan konfigurasi yang benar dari Firebase Console
- Untuk mendapatkan konfigurasi:
- Buka Project Settings di Firebase Console
- Scroll ke bawah ke "Your apps"
- Pilih platform yang ingin dikonfigurasi
- Copy konfigurasi yang diperlukan
8. Konfigurasi Android (android/app/build.gradle)
Tambahkan di bagian bawah file:
apply plugin: 'com.google.gms.google-services'
9. Konfigurasi Android (android/build.gradle)
Tambahkan di dependencies:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
10. Konfigurasi iOS (ios/Runner/Info.plist)
Tambahkan konfigurasi URL scheme jika diperlukan.
11. Test Setup
- Jalankan
flutter clean
- Jalankan
flutter pub get
- Jalankan
flutter run
- Coba register user baru
- Cek Firebase Console untuk memastikan user terdaftar
Database Structure
Collections yang digunakan:
1. users
- uid (document ID)
- email: string
- displayName: string
- photoURL: string
- role: string (default: "user")
- isActive: boolean
- createdAt: timestamp
- updatedAt: timestamp
2. detections
- userId: string
- timestamp: timestamp
- location: string
- confidence: number (0.0 - 1.0)
- imageUrl: string
- status: string (detected, confirmed, false_alarm, resolved)
- severity: string (low, medium, high, critical)
- description: string
- resolved: boolean
- createdAt: timestamp
3. alerts
- userId: string
- detectionId: string
- title: string
- message: string
- severity: string
- location: string
- timestamp: timestamp
- isRead: boolean
- isResolved: boolean
- createdAt: timestamp
4. devices
- userId: string
- deviceName: string
- deviceType: string
- location: string
- status: string
- lastSeen: timestamp
- createdAt: timestamp
Security Rules
Firestore Rules
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users can only access their own data
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
// Detections - users can only access their own detections
match /detections/{detectionId} {
allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
}
// Alerts - users can only access their own alerts
match /alerts/{alertId} {
allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
}
// Devices - users can only access their own devices
match /devices/{deviceId} {
allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
}
}
}
Storage Rules
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /users/{userId}/{allPaths=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Environment Variables (Opsional)
Untuk keamanan tambahan, Anda bisa menggunakan environment variables untuk API keys.
Troubleshooting
- Jika error "Firebase project not found", pastikan project ID benar
- Jika error authentication, cek apakah Email/Password sudah dienable
- Jika error Firestore, cek rules dan pastikan database sudah dibuat
- Jika error di build, pastikan google-services.json sudah di tempatkan dengan benar
Windows Build Issues
Firebase SDK untuk Windows masih dalam tahap pengembangan dan sering mengalami masalah:
-
Disk Space Error:
- Pastikan ada space disk yang cukup (minimal 5GB free)
- Hapus folder
build
dan jalankanflutter clean
-
Linking Errors (LNK2019, LNK1120):
- Firebase Windows SDK memiliki compatibility issues
- Solusi: Gunakan platform lain untuk development:
# Untuk Android flutter run -d android # Untuk Web flutter run -d chrome # Untuk testing di emulator flutter emulators --launch <emulator_name>
-
CMake Deprecation Warnings:
- Ini hanya warning dan tidak mempengaruhi functionality
- Akan diperbaiki di versi Firebase SDK selanjutnya
-
Alternative untuk Windows Development:
- Gunakan Firebase Web SDK melalui browser
- Develop dan test di Android emulator
- Deploy ke Android device untuk testing
Recommended Development Flow:
- Primary Development: Android (emulator atau device)
- Testing: Web browser (Chrome)
- Production: Android APK build
- Windows: Tunggu Firebase SDK update atau gunakan alternatif
Next Steps
- Buat halaman register
- Buat halaman home/dashboard
- Implementasi real-time fire detection
- Implementasi push notifications
- Implementasi file upload untuk images