Resumen
Esta guía cubre cómo configurar el OneSignal Service Worker para Notificaciones Web Push.¿Qué son los service workers?
Un Service Worker es un script en segundo plano que se ejecuta en un hilo separado de la página principal. Habilita funciones como notificaciones push, almacenamiento en caché sin conexión y sincronización en segundo plano. Se instala cuando tu sitio lo registra y, aunque no siempre está ejecutándose, puede activarse para manejar eventos (incluido push) incluso después de que el usuario navegue fuera.
Cómo funcionan los service workers
Cómo integrar el service worker de OneSignal
A medida que sigas nuestra guía de Web SDK Setup, se te proporcionará el archivo de service workerOneSignalSDKWorker.js.
Descargar el archivo .js
Descarga el archivoOneSignalSDKWorker.js del dashboard de OneSignal o Descarga el Archivo de Service Worker de OneSignal aquí.
Subir el archivo .js a tu servidor
Nuestro SDK busca por defecto en la raíz de tu sitio el archivoOneSignalSDKWorker.js, por ejemplo: https://yoursite.com/OneSignalSDKWorker.js
Simplemente puedes subir este archivo al directorio raíz de tu sitio y regresar a la guía de Web push setup para los siguientes pasos. Sin embargo, se recomienda colocar este archivo OneSignalSDKWorker.js en una ruta de subdirectorio a la que nunca enlazarás usuarios como https://yoursite.com/push/onesignal/OneSignalSDKWorker.js.
Puedes colocar este archivo en la raíz, pero puede entrar en conflicto con otros Service Workers que tengas ahora o que puedas agregar en el futuro. Además, el archivo debe colocarse en una ruta de ubicación permanente que nunca cambiará. Una vez que un Service Worker esté registrado con el navegador, es difícil cambiarlo.
Configuración del Service Worker
El archivo de service worker de OneSignalOneSignalSDKWorker.js debe cumplir estos requisitos:
- El archivo debe ser públicamente accesible, lo que significa que deberías poder navegar al archivo en un navegador y ver el código.
- El archivo debe servirse con un
content-typedeapplication/javascript; charset=utf-8. - El archivo debe apuntar al mismo origen del sitio (tu dominio del sitio). Apuntar a un Service Worker en un origen diferente no está permitido. No CDNs ni subdominios.
Confirmar que el service worker está configurado correctamente
Visita el service worker en tu navegador. Deberías ver el código del service worker:importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");

Ejemplo del código del service worker
OneSignalSDKWorker.js a la raíz de tu sitio (es accesible en https://yoursite.com/OneSignalSDKWorker.js) entonces no se necesita ninguna acción adicional.
Sin embargo, si lo pusiste en un subdirectorio como https://yoursite.com/push/onesignal/OneSignalSDKWorker.js entonces necesitarás establecer el alcance de registro de la siguiente manera:
- Configuración típica de sitio
- Configuración de código personalizado

Configuración del service worker para configuración típica de sitio
- Path to service worker files es el directorio donde estará disponible el archivo OneSignal Service Worker. Si el Service Worker está disponible en:
https://yoursite.com/push/onesignal/OneSignalSDKWorker.jsentonces la ruta es:/push/onesignal/ - Main and Updater service worker filenames es el nombre del archivo Service worker. Debería ser
OneSignalSDKWorker.jspero si lo cambiaste, asegúrate de usar la extensión de archivo.js. Por ejemplo, si tu servidor fuerza archivos a minúsculas, puedes establecer el nombre de archivo comoonesignalsdkworker.js - Service worker registration scope son las páginas en las que este archivo puede funcionar. Debe ser una ruta a la que nunca enlazarás usuarios y nunca alojarás ninguna página desde ahora o en el futuro. Un ejemplo de ruta común:
/push/onesignal/y el alcance podría ser la misma ruta o más profundo como:/push/onesignal/js/
Guía de migración del OneSignal Service Worker
Esta sección es solo para clientes que ya usan OneSignal, tienen una gran cantidad de suscriptores de web push, y quieren cambiar la configuración del OneSignal Service Worker. Esto no se recomienda a menos que tengas una razón específica para hacerlo.Pasos de migración para el archivo OneSignalSDKWorker.js
Pasos de migración para el archivo OneSignalSDKWorker.js
- Conflicto con una PWA
- Conflicto con una configuración AMP
- Conflicto con tu Service Worker de almacenamiento en caché, o cualquier otra función de Service Worker que requiera alcance raíz
- Tu sitio tiene requisitos de seguridad que no permiten que código de Service Worker de terceros se ejecute en un alcance que controla una página que tus usuarios visitarán.
Elegir un Alcance de Service Worker de OneSignal
Se recomienda que elijas una ruta de alcance de Service Worker a la que nunca enlazarás a un usuario, pero que aún sea claro lo que hace. Ejemplo:/push/onesignal/. De esta manera tu PWA, AMP, o cualquier otro ServiceWorker de almacenamiento en caché puede controlar la página que ve un usuario para funcionar correctamente.Está bien poner múltiples service workers en la misma ruta de ubicación, pero DEBEN tener ruta de alcance única.- Opción 1: Cambiar alcance
- Opción 2: Cambiar nombre de archivo o ubicación
Cambiar de manera segura el Alcance del Service Worker de OneSignal
Tipo de Configuración 1. Configuración Predeterminada de OneSignal - Alcance raíz ”/” Y Contenido predeterminado de OneSignalSDKWorker.js
Confirma que el contenido de tu archivoOneSignalSDKWorker.js sea el mismo que se encuentra en Descarga el Archivo de Service Worker de OneSignal aquí. (Sin ningún otro código no relacionado con OneSignal que puedas necesitar)En este caso puedes cambiar el alcance de OneSignal a cualquier cosa que elijas para hacer espacio para que otro Service Worker sea colocado en el alcance raíz. Consulta arriba Personaliza tu Integración de Service Worker.Tipo de Configuración 2. Poco Común - Alcance raíz ”/” Y OneSignalSDKWorker.js (o tu nombre de archivo configurado) contiene OneSignal + otro código o importScripts
Esta sección se aplica si tienes OneSignal Y algún otro código personalizado oimportScript como el siguiente en tu Service Worker actual.Mantén tu código de service worker existente.
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
para mantenerlo por un período de tiempo extendido. (se recomienda un año o más,
depende de cuánto tiempo quieras seguir enviando pushes a usuarios que nunca
vuelven a visitar tu sitio). Ejemplo: // MANTENER Hasta YYYY-MM-DD: Requerido para que los pushes funcionen correctamente para usuarios que no han vuelto a visitar para migrar al nuevo ServiceWorker específico de OneSignal.Crear un nuevo archivo de service worker
OneSignalSDKWorker.js bajo un directorio diferente, como
/push/onesignal/ con la siguiente línea única de código
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");Sigue la guía sobre "Personalizar tu Integración de Service Worker" para cambiar tu alcance, nombre de archivo y ruta.
En este punto, los usuarios nuevos y que regresan se suscribirán automáticamente al nuevo ServiceWorker de OneSignal.
Espera la cantidad de tiempo (un año aproximadamente) como se indica en el paso 1.
Sigue la guía de OneSignal - Eliminar Usuarios para eliminar usuarios más antiguos que la línea de tiempo que elegiste.
Eliminar comentario del service worker original
importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js"); con el comentario de tu ServiceWorker raíz original.