TKK_E32231503/NOTIFICATION_FIX_README.md

4.4 KiB

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:

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

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:

isMinifyEnabled = true
isShrinkResources = true

Lalu build:

flutter clean
flutter pub get
flutter build apk --release

Option 3: Build App Bundle (untuk Google Play)

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

adb uninstall com.example.aplikasi_novil

2. Install APK baru

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

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:

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