Pengusir-Hama-Burung-Otomatis/project/tugas_akhir/lib/services/notif_service.dart

53 lines
1.9 KiB
Dart

import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class NotifService {
static final FlutterLocalNotificationsPlugin _notif =
FlutterLocalNotificationsPlugin();
static Future<void> init() async {
const android = AndroidInitializationSettings('@mipmap/ic_launcher');
const settings = InitializationSettings(android: android);
await _notif.initialize(settings);
// Mendaftarkan pintu gerbang utama channel melayang ke OS Android
final androidImplementation = _notif
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin
>();
if (androidImplementation != null) {
// Meminta izin notifikasi langsung ke layar HP saat aplikasi dibuka
await androidImplementation.requestNotificationsPermission();
const channel = AndroidNotificationChannel(
'channel_kebun_id', // Wajib sama persis dengan yang ada di AndroidManifest.xml
'Notifikasi Burung',
description: 'Mendeteksi pergerakan hama burung kebun',
importance: Importance.max, // Memaksa spanduk muncul di atas layar
playSound: true,
enableVibration: true,
);
await androidImplementation.createNotificationChannel(channel);
}
}
static Future<void> showNotif(String title, String body) async {
const androidDetails = AndroidNotificationDetails(
'channel_kebun_id', // Disamakan dengan manifest & init channel di atas
'Notifikasi Burung',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker',
icon: '@mipmap/ic_launcher',
);
const details = NotificationDetails(android: androidDetails);
// Membuat ID Notifikasi acak berbasis waktu agar setiap notifikasi baru tidak saling menimpa
int idUnik = DateTime.now().millisecondsSinceEpoch ~/ 1000;
await _notif.show(idUnik, title, body, details);
}
}