import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:get/get.dart'; class FirebaseMessagingService { FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance; Future initializeFirebaseMessaging() async { // Solicitar permisos de notificación si es necesario (opcional) NotificationSettings settings = await _firebaseMessaging.requestPermission( alert: true, badge: true, sound: true, ); // Verificar si los permisos de notificación están habilitados if (settings.authorizationStatus == AuthorizationStatus.authorized || settings.authorizationStatus == AuthorizationStatus.provisional) { // Obtener el token de registro para la instancia de la aplicación String? token = await _firebaseMessaging.getToken(); print('Token FCM: $token'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { print( 'Mensaje FCM recibido: ${message.notification?.title} - ${message.notification?.body}'); // Obtener el valor de la clave "screen" de los datos de la notificación String? notificationScreen = message.data['screen']; // Navegar a la pantalla correspondiente según el valor de la clave "screen" if (notificationScreen == "misservicios") { // Navegar a MyServicesScreen Get.offNamed('/misservicios'); } else if (notificationScreen == "solicitud") { // Navegar a SolicitudScreen Get.offNamed('/solicitud'); } }); // Manejar la notificación cuando se toca y la aplicación está en primer plano (opcional) FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { print( 'Mensaje FCM abierto desde la aplicación en primer plano: ${message.notification?.title} - ${message.notification?.body}'); // Aquí puedes redirigir al usuario a una pantalla específica o realizar acciones según los datos recibidos }); // Manejar la notificación cuando se toca y la aplicación está cerrada (opcional) RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage(); if (initialMessage != null) { print( 'Mensaje FCM abierto desde la aplicación cerrada: ${initialMessage.notification?.title} - ${initialMessage.notification?.body}'); // Aquí puedes redirigir al usuario a una pantalla específica o realizar acciones según los datos recibidos } } } }