import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:logger/logger.dart'; class FirebaseNotificationService { final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance; final Logger _logger = Logger(); Future initialize() async { await Firebase.initializeApp(); _logger.i('Firebase initialized.'); NotificationSettings settings = await _firebaseMessaging.requestPermission(); _logger.i('FCM permission status: ${settings.authorizationStatus}'); // Foreground messages FirebaseMessaging.onMessage.listen((RemoteMessage message) { _logger.i('🔔 Foreground Notification Received'); _logNotificationDetails(message); }); // When app is opened from background via notification FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { _logger.i('📲 App opened via notification'); _handleNotificationTap(message); }); // Background handler registration FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); } void _handleNotificationTap(RemoteMessage message) { _logger.i('Notification tapped with data: ${message.data}'); } void _logNotificationDetails(RemoteMessage message) { _logger.i('Notification ID: ${message.messageId}'); _logger.i('Title: ${message.notification?.title}'); _logger.i('Body: ${message.notification?.body}'); _logger.i('Data: ${message.data}'); } } // Background handler Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); final Logger _logger = Logger(); _logger.i('🕓 Handling background notification...'); _logger.i('Notification ID: ${message.messageId}'); _logger.i('Title: ${message.notification?.title}'); _logger.i('Body: ${message.notification?.body}'); _logger.i('Data: ${message.data}'); }