El servicio singleton se encuentra en src/modules/profile/services/notificationsService.ts y expone los siguientes métodos:
Método
Descripción
getPermissionStatus()
Consulta el estado actual de permisos de notificación
requestPermissions()
Solicita permisos de notificación al usuario
getExpoPushToken()
Obtiene el push token de Expo para el dispositivo
setAppBadgeCount(count)
Establece el número del badge de la app
clearAppBadge()
Limpia el badge de la app (equivale a setAppBadgeCount(0))
Permisos
Push token
Badge
import { notificationsService } from '@/modules/profile/services/notificationsService';// Consultar estado actualconst status = await notificationsService.getPermissionStatus();// Solicitar permisosconst granted = await notificationsService.requestPermissions();
import { notificationsService } from '@/modules/profile/services/notificationsService';// Obtener el token para registrar en el backendconst token = await notificationsService.getExpoPushToken();
Cuando la app está en primer plano y llega una notificación, se aplica la siguiente configuración:
Propiedad
Valor
Descripción
Alertas/banners
Habilitado
Se muestran alertas visuales
Sonido
Deshabilitado
Sin sonido en la notificación individual
Badge
Deshabilitado
No actualiza el badge por notificación individual
Lista de notificaciones
Visible
Aparece en la lista de notificaciones del sistema
La configuración de badge deshabilitado en notificaciones individuales significa que el badge se
gestiona manualmente a través del servicio, no automáticamente por cada notificación recibida.
Las notificaciones push pueden contener un campo deep_link en sus datos. Cuando el usuario toca la notificación, el enlace se procesa a través del linkingService para navegar a la pantalla correspondiente.
// Estructura de datos de una notificación con deep link{ title: "Nueva reserva", body: "Tienes una nueva reserva pendiente", data: { deep_link: "/stays/123/details" }}
El deep link se rutea a través del linkingService, que se encarga de validar la ruta y manejar
casos donde el usuario no está autenticado (preservando el deep link para después del login).