petid-wikimemoria rápida, no arquitectura
‹ todos los flujos

Registro de push token + purga de tokens muertos

petid-apipetid-clientnotification-worker
actualizado 2026-09-02

Objetivo

Mantener actualizado qué dispositivos reciben push de qué usuario, incluyendo cuando un dispositivo cambia de dueño (móvil compartido) o Firebase rota el token.

Cómo empieza

petid-client pide permisos y token nativo al arrancar sesión (registerForPushNotificationsAsync(), (home)/_layout.tsx).

Pasos principales

  1. Se pide el token FCM crudo (getDevicePushTokenAsync()), deliberadamente no getExpoPushTokenAsync()notification-api/notification-worker hablan con FCM/APNs directo, no reenvían por los servidores de Expo.
  2. POST /devices { token, platform }RegisterDeviceUseCase.execute()devices.upsertByToken(device).
  3. La identidad es el token, no el par (userId, token): si el token ya existe en otro usuario, se reasigna al usuario actual. Cubre rotación de token y dispositivo compartido sin lógica extra.
  4. Logout → DELETE /devices/:token (best-effort, no bloquea el logout si falla).
  5. Cuando notification-worker detecta un token muerto (FCM devuelve “unregistered”), llama de vuelta: POST /webhooks/push/dead-tokens, guardado con header x-webhook-secret (FCM_CLEANER_WEBHOOK_SECRET, comparación timing-safe) → PurgeDeadTokensUseCase borra esos tokens del registry.

Reglas de negocio

Interacciones

petid-clientpetid-api (/devices) ; petid-apinotification-api → FCM/APNs ; notification-workerpetid-api (/webhooks/push/dead-tokens).

Dónde seguir mirando

Casos especiales