Referencia técnica
Punto de entrada para el equipo técnico que va a integrar con Reskyt.
La API de push es la API pública de Reskyt disponible actualmente.
| API | Para qué | Autenticación |
|---|---|---|
| Notificaciones push | Enviar notificaciones desde tus sistemas | x-api-key |
Si necesitas integrar por otra vía, lo habitual es resolverlo desde la web o mediante un módulo. Ver integraciones y SDKs.
Detectar que estás dentro de la app
Sección titulada «Detectar que estás dentro de la app»Las peticiones que salen de la app incluyen el identificador rktwebview en
el user agent. Es la comprobación de referencia.
const isReskytApp = navigator.userAgent.includes('rktwebview');Custom User Agent
Sección titulada «Custom User Agent»Puedes definir un user agent propio para distinguir plataformas en tu
analítica o en tu backend, con una etiqueta del tipo clientname_app_IOS o
clientname_app_ANDROID.
Se configura en Configuración › Desarrollador, con un campo para iOS y otro para Android.
El valor que escribas sustituye al user agent completo. Para conservar el user
agent por defecto, incluido el identificador rktwebview, escribe
%useragent% en el valor y añade tu etiqueta a continuación, por ejemplo
%useragent% clientname_app_IOS. Si omites %useragent%, la comprobación de
rktwebview deja de funcionar.
const ua = navigator.userAgent;const isIOSApp = ua.includes('_app_IOS');La API window.ReskytLayout
Sección titulada «La API window.ReskytLayout»Dentro de la app, tu JavaScript tiene disponible el objeto
window.ReskytLayout, con métodos para consultar datos del dispositivo y
pedir acciones a la app. Aquí se recogen los de uso más habitual. La
referencia completa aparece como autocompletado y documentación en el editor
de JavaScript del backoffice.
Esperar a que la app esté lista
Sección titulada «Esperar a que la app esté lista»ReskytLayout existe desde que se carga la página, pero algunos métodos solo
devuelven datos reales cuando la app ha terminado de arrancar. El código que
se configura desde el backoffice se ejecuta ya con la app lista. Si el código
es de tu propia web, espera antes con whenReady():
if (window.ReskytLayout) { window.ReskytLayout.whenReady().then((ready) => { if (!ready) return; // la app no ha arrancado en esta página // aquí ya puedes usar el resto de métodos });}Identificador del dispositivo
Sección titulada «Identificador del dispositivo»ReskytLayout.device.getId() devuelve el identificador del dispositivo, que
es el valor que se envía en el campo deviceId de la
API de push. Devuelve una promesa, y su valor es null si el
dispositivo todavía no está registrado.
El flujo recomendado es pedirlo durante el login o el registro, guardarlo y asociarlo al usuario correspondiente en tus sistemas. A partir de ahí ese identificador es el que se usa para segmentar los envíos.
if (navigator.userAgent.includes('rktwebview')) { window.ReskytLayout.device.getId().then((deviceId) => { if (deviceId) { // Guárdalo asociado al usuario en tu base de datos. } });}Idioma y país
Sección titulada «Idioma y país»ReskytLayout.localization.getCurrentLocation() devuelve la zona, el país y
el idioma que el usuario tiene seleccionados en la app. Cada valor puede ser
null si no se ha elegido.
const { zone, country, language } = window.ReskytLayout.localization.getCurrentLocation();Para reaccionar cuando el usuario cambia de idioma o de país:
window.ReskytLayout.localization.onLocationChange((location) => { console.log('Nuevo idioma:', location.language);});Notificaciones sin leer
Sección titulada «Notificaciones sin leer»ReskytLayout.notifications.getUnreadCount() devuelve cuántas notificaciones
tiene el usuario sin leer, por ejemplo para pintar un contador en tu web.
const unread = window.ReskytLayout.notifications.getUnreadCount();
window.ReskytLayout.notifications.onUnreadCountChange((count) => { // Actualiza tu contador con el nuevo valor.});Pedir una valoración en la store
Sección titulada «Pedir una valoración en la store»ReskytLayout.ratings.requestReview() pide al sistema que muestre el diálogo
de valoración de App Store o de Google Play, por ejemplo tras una compra. Es
el sistema operativo quien decide si lo muestra, así que puede no aparecer.
if (window.ReskytLayout.ratings.isAvailable()) { window.ReskytLayout.ratings.requestReview();}Guardar datos en el dispositivo
Sección titulada «Guardar datos en el dispositivo»ReskytLayout.storage guarda pares clave y valor en el propio dispositivo.
A diferencia de localStorage, los datos son comunes a todos los dominios que
abre la app. Los valores son texto, números o booleanos, y las operaciones
devuelven promesas.
async function recordarNewsletter() { const storage = window.ReskytLayout.storage; if (!storage.isAvailable()) return;
await storage.set('newsletter_visto', true); const visto = await storage.get('newsletter_visto'); // 'true', como texto await storage.remove('newsletter_visto');}Consentimiento
Sección titulada «Consentimiento»ReskytLayout.consent lee y escribe el consentimiento del usuario dentro de la
app, para conectarlo con el banner de cookies de la web. Ver
consentimiento y banner de cookies.
Parámetros de los deep links
Sección titulada «Parámetros de los deep links»Cuando un deep link abre la app ya instalada, la URL llega completa a la WebView, con todos sus parámetros tal cual.
Dónde seguir
Sección titulada «Dónde seguir»Integraciones y SDKs explica las vías de integración disponibles y qué implica cada una en el ciclo de publicación. El catálogo de módulos lista lo que ya está integrado.
Deep links cubre Universal Links en iOS y App Links en Android. Autenticación y sesiones explica dónde está la frontera de responsabilidades en el login.