57 lines
2.5 KiB
Dart
57 lines
2.5 KiB
Dart
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
class FirebaseMessagingService {
|
|
FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
|
|
|
|
Future<void> 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
|
|
}
|
|
}
|
|
}
|
|
}
|