Cualquier framework (REST)

Lo que toda app hace para recibir notificaciones de PushHub, sin SDK.

Todas las guías por framework siguen estos cinco pasos. Si tu framework no tiene guía propia (NativeScript, Kotlin Multiplatform, otros), esta es la tuya.

1. Obtén el token push

Usa la librería push habitual de tu framework:

  • Android: siempre FCM, como token de registro o como Installation ID.
  • iOS: APNs directo, o FCM si usas Firebase en iOS.

Pide permiso al usuario antes de obtener el token en iOS y en Android 13+.

2. Registra el dispositivo

Cada vez que la app arranca o el token cambia:

POST https://api.pushhub.daertec.com/v1/devices
Authorization: Bearer pk_live_TU_LLAVE_PUBLICA
Content-Type: application/json

{
  "token": "TOKEN",
  "platform": "ios",
  "environment": "auto",
  "language": "es",
  "timezone": "America/Santo_Domingo",
  "appVersion": "2.4.0",
  "osVersion": "18.1",
  "deviceModel": "iPhone15,2",
  "notificationsEnabled": true,
  "framework": "flutter"
}
  • Es un upsert: repetirlo no duplica nada.
  • provider (fcm/apns) se detecta por el formato del token.
  • En iOS, environment: "auto" deja que PushHub detecte sandbox o producción; si lo sabes, envíalo.
  • Si la app no tiene aún la credencial del proveedor, el dispositivo queda pending_credential y se activa solo al cargarla.

3. Identifica al usuario (opcional, recomendado)

Cuando el usuario inicia sesión, asocia el dispositivo a tu id de usuario. Así puedes enviarle a todos sus dispositivos con target: { type: "external_users", ids: [...] }:

POST /v1/devices/{token}/identify
{ "externalUserId": "cliente-123" }

Al cerrar sesión: POST /v1/devices/{token}/logout.

Etiquetas y topics:

  • PUT /v1/devices/{token}/tags con {"tags": {"plan": "gold"}};
  • POST /v1/devices/{token}/topics/ofertas.

4. Muestra y abre la notificación

  • Con la app cerrada o en segundo plano, el sistema muestra la notificación solo.
  • Con la app abierta, muchas librerías no la muestran: hay que hacerlo en el código. Ver la guía de tu framework.
  • Al tocarla, lee los datos del payload:
    • _phid: id del envío;
    • deepLink: el enlace profundo, si lo hay;
    • tus data;
    • _ph: JSON con multimedia, botones y enlace.

5. Reporta los eventos

Para que la analítica muestre recepción, aperturas y clics:

POST /v1/events
{ "type": "opened", "token": "TOKEN", "notificationId": "<_phid>" }

Tipos:

  • received, opened, clicked (con actionId si fue un botón) y dismissed;
  • permission_granted y permission_denied cuando cambia el permiso.

Puedes enviar un lote de hasta 100 con {"events": [...]}.

Dispositivo de prueba

Para probar con llaves test, empareja el teléfono: el panel muestra un código de 6 dígitos y la app lo envía con POST /v1/devices/{token}/pair y {"code": "123456"}.