Cordova / Ionic + Cordova
Plugin oficial cordova-plugin-pushhub sobre @havesource/cordova-plugin-push, o integración por REST.
El plugin oficial cordova-plugin-pushhub (Cordova 12+, cordova-android 13+, cordova-ios 7+) se apoya en @havesource/cordova-plugin-push, que se instala solo, y agrega:
- registro del dispositivo, con cola sin conexión;
- entorno de iOS detectado del perfil de aprovisionamiento;
- canal de Android;
- notificaciones con la app abierta en Android, con imagen y botones;
- aperturas y clics reportados;
- usuarios, tags y topics.
Tokens:
- Android: FCM. Necesitas la credencial de Firebase.
- iOS: APNs, lo habitual con
cordova-plugin-push. Necesitas la llave .p8 en PushHub. Si configuras el plugin para FCM en iOS, usa iOS vía FCM.
Instalación
cordova plugin add cordova-plugin-pushhub
En config.xml, el archivo de Firebase para Android:
<platform name="android">
<resource-file src="google-services.json" target="app/google-services.json" />
</platform>
La Content-Security-Policy de index.html debe permitir la API: connect-src 'self' https://api.pushhub.daertec.com.
Uso
document.addEventListener('deviceready', async () => {
await PushHub.init({
appKey: 'pk_live_TU_LLAVE_PUBLICA', // solo la llave PUBLICA
androidChannel: { id: 'general', name: 'Avisos generales' },
});
PushHub.onNotificationOpened((n) => {
// n.deepLink, n.actionId (botón tocado), n.data (tus datos)
});
});
// Pide el permiso cuando el usuario entienda para qué
const estado = await PushHub.requestPermission();
PushHub.identify('cliente-123');
PushHub.setTags({ plan: 'gold' });
PushHub.subscribe('ofertas');
await PushHub.pairTestDevice('483920'); // dispositivo de prueba
PushHub.logout();
Las opciones de init son las mismas que en Capacitor. Para TypeScript, los tipos están en cordova-plugin-pushhub/types.
Imágenes y botones en iOS
- En Xcode (
platforms/ios): File > New > Target > Notification Service Extension. - Reemplaza su
NotificationService.swiftporplugins/cordova-plugin-pushhub/src/ios/NotificationService/NotificationService.swift. - Inicia el SDK con
iosNotificationServiceExtension: true.
Sin SDK (REST)
Con cualquier plugin push, registra el token tú mismo:
fetch('https://api.pushhub.daertec.com/v1/devices', {
method: 'POST',
headers: { Authorization: 'Bearer pk_live_TU_LLAVE_PUBLICA', 'Content-Type': 'application/json' },
body: JSON.stringify({ token, platform: cordova.platformId, framework: 'cordova', environment: 'auto' }),
});
El id del envío llega en _phid y el enlace en deepLink. Repórtalo a /v1/events al abrir.