Notifikasi Foreground Service di Flutter
Foreground service pada Android adalah sebuah operasi yang diketahui oleh pengguna meskipun pengguna tidak berinteraksi secara langsung dengan aplikasi. Pengguna dapat melihat proses sebuah Foreground Service dari notifikasi yang muncul.
Foreground Service di Flutter
Post ini membahas cara menampilkan notifikasi Foreground Service dengan plugin flutter_local_notification. Foreground Servicenya sendiri bisa berupa proses yang memakan waktu lama misalnya sebuah timer.
Tutorial
Android Manifest
Masukan kode dibawah ke AndroidManifest.xml
di dalam tag <application>
.
<service
android:name="com.dexterous.flutterlocalnotifications.ForegroundService"
android:exported="false"
android:stopWithTask="false"/>
android:stopWithTask
menandakan notification akan berhenti jika aplikasi ditutup.
Kemudian tambahkan juga permission untuk foreground service
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Masukan kode tersebut didalam tag <manifest>
Sisi Flutter
Inisialisasi Notification Plugin
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('app_icon');
final InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: (String? payload) async {
if (payload != null) {
debugPrint('notification payload: $payload');
}
// lakukan sesuatu dengan payload.
// misal melakukan navigasi
// ke sebuah halaman.
});
Fungsi untuk menampilkan notifikasi
Future<void> showForegroundServiceNotification(){
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails('your channel id', 'your channel name',
channelDescription: 'your channel description',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker');
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.startForegroundService(1, 'plain title', 'plain body',
notificationDetails: androidPlatformChannelSpecifics,
payload: 'item x');
}
Untuk mengupdate isi notifikasi cukup memanggil fungsi menampilkan notifikasi dengan isi yang berbeda.
Menghentikan Notifikasi
Future<void> _stopForegroundService() async {
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.stopForegroundService();
}