Ir al contenido

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.

APIPara quéAutenticación
Notificaciones pushEnviar notificaciones desde tus sistemasx-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.

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');

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');

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.

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
});
}

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.
}
});
}

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);
});

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.
});

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();
}

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');
}

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.

Cuando un deep link abre la app ya instalada, la URL llega completa a la WebView, con todos sus parámetros tal cual.

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.