# Fix Notifikasi untuk Release Build ## Masalah Notifikasi tidak muncul pada aplikasi release (APK yang sudah di-install), padahal berfungsi normal saat debug. ## Penyebab 1. **ProGuard/R8 Code Shrinking**: Pada release build, Android secara otomatis menghapus kode yang dianggap tidak digunakan, termasuk komponen notifikasi plugin. 2. **Minify Enabled**: Setting minifyEnabled di build.gradle menyebabkan code shrinking aktif. ## Solusi yang Diterapkan ### 1. File `proguard-rules.pro` (BARU) File ini berisi rules untuk mencegah ProGuard menghapus kode notifikasi: - Keep Flutter plugin classes - Keep flutter_local_notifications classes - Keep Android notification components - Keep MQTT client classes ### 2. Update `build.gradle.kts` Menambahkan konfigurasi: ```kotlin isMinifyEnabled = false // Disable code shrinking isShrinkResources = false // Disable resource shrinking proguardFiles(...) // ProGuard rules (untuk jika diaktifkan nanti) ``` ### 3. Update `MainActivity.kt` Menambahkan pembuatan notification channel saat aplikasi start: - Membuat channel "pengering_ikan_channel" - Set importance ke HIGH - Enable vibration dan lights ## Cara Build Ulang Aplikasi ### Option 1: Build APK (Tanpa minify - Recommended) ```bash flutter clean flutter pub get flutter build apk --release ``` APK akan ada di: `build/app/outputs/flutter-apk/app-release.apk` ### Option 2: Build APK (Dengan minify + ProGuard) Jika ingin APK lebih kecil, edit `build.gradle.kts`: ```kotlin isMinifyEnabled = true isShrinkResources = true ``` Lalu build: ```bash flutter clean flutter pub get flutter build apk --release ``` ### Option 3: Build App Bundle (untuk Google Play) ```bash flutter clean flutter pub get flutter build appbundle --release ``` AAB akan ada di: `build/app/outputs/bundle/release/app-release.aab` ## Testing Notifikasi ### 1. Uninstall aplikasi lama ```bash adb uninstall com.example.aplikasi_novil ``` ### 2. Install APK baru ```bash adb install build/app/outputs/flutter-apk/app-release.apk ``` ### 3. Test notifikasi - Buka aplikasi - Pastikan permission notifikasi sudah di-allow (Android 13+) - Jalankan proses pengeringan - Tunggu hingga selesai - Notifikasi harus muncul ### 4. Check via Logcat ```bash adb logcat | grep -i notification ``` ## Verifikasi Permission ### Check di Settings Android: 1. Buka **Settings > Apps > Pengering Ikan** 2. Pilih **Notifications** 3. Pastikan notifikasi **ENABLED** 4. Check channel "Pengering Ikan" harus ada ### Check via ADB: ```bash adb shell dumpsys notification_listener adb shell cmd notification list ``` ## Troubleshooting ### Notifikasi masih tidak muncul? 1. **Check permission di runtime:** - Aplikasi harus request permission POST_NOTIFICATIONS untuk Android 13+ - Sudah di-handle di `NotificationService.initialize()` 2. **Check notification channel:** - Channel harus dibuat di native (MainActivity.kt) ✅ - Channel ID harus sama dengan yang di Dart ✅ 3. **Check battery optimization:** - Buka Settings > Battery > Battery Optimization - Set aplikasi ke "Don't optimize" 4. **Check Do Not Disturb:** - Pastikan DND mode tidak aktif - Atau allow aplikasi bypass DND 5. **Test dengan notification sederhana:** Tambahkan button test notifikasi di UI untuk memastikan sistem notifikasi bekerja. ## Files yang Diubah/Ditambahkan ### Baru: - ✅ `android/app/proguard-rules.pro` ### Diubah: - ✅ `android/app/build.gradle.kts` - ✅ `android/app/src/main/kotlin/com/example/aplikasi_novil/MainActivity.kt` ### Tidak berubah (sudah benar): - ✅ `android/app/src/main/AndroidManifest.xml` (permission sudah lengkap) - ✅ `lib/services/notification_service.dart` (channel ID sudah benar) ## Catatan Penting 1. **Setiap kali build release**, pastikan: - `flutter clean` dulu - `flutter pub get` - Uninstall APK lama sebelum install yang baru 2. **minifyEnabled = false** akan membuat APK lebih besar (~10-20MB lebih besar) - Tapi notifikasi dijamin bekerja - Jika ingin APK lebih kecil, gunakan minify + ProGuard rules 3. **Testing harus di device fisik**, bukan emulator - Emulator kadang tidak akurat untuk notifikasi 4. **Versi Android yang didukung:** - Android 5.0+ (API 21+) untuk notifikasi dasar - Android 8.0+ (API 26+) untuk notification channels - Android 13+ (API 33+) perlu permission POST_NOTIFICATIONS ## Kontak Jika masih ada masalah, check: 1. Logcat untuk error messages 2. Notification settings di Android 3. Battery optimization settings