Esto sucede solo en Chrome (la aplicación no es compatible con ningún otro navegador por ahora) y en versiones recientes.
No puedo reproducir este problema, pero aparece regularmente en nuestro panel de monitoreo para usuarios aleatorios.
Mensaje de error: "AbortError: registro fallido - error de servicio push"
El siguiente bloque de código se ejecuta al cargar la página:
const currentNotificationsPermission = await navigator.permissions.query({ name: 'notifications' }); currentNotificationsPermission.onchange = function onchange() { // Update the internal state, this can happen after user interaction (clicking a "Allow notifications" button) };Esto se ejecuta en la carga de la página (cuando se otorga el estado interno), o cada vez que el estado interno cambia a otorgado después de un gesto del usuario:
navigator.serviceWorker.register('/serviceworker.js', { scope: '/myScope' }); navigator.serviceWorker.ready.then((registration) => { const subscribeOptions = { userVisibleOnly: true, applicationServerKey: 'myKey', }; return registration.pushManager.subscribe(subscribeOptions); }).then((pushSubscription) => { // Send pushSubscription to server, doesn't run in case of AbortError }).catch((err) => { console.log(err); // AbortError, randomly });Supongo que no puedes comprobar chrome://gcm-internals/ si no puedes reproducir el problema.
Una posibilidad es que algunos de sus usuarios tengan configuraciones de Chrome o complementos que impidan el uso de GCM, pero el mensaje de error no coincide con eso.
Supongo que este es un caso de TOO_MANY_REGISTRATIONS donde un dispositivo tiene demasiados registros individuales con FCM. Es posible que algunos de sus usuarios tengan demasiadas aplicaciones cliente, o que una de sus aplicaciones cliente se esté registrando una y otra vez, lo que genera muchos registros.
De acuerdo con la especificación de Push API, este error puede ocurrir de varias maneras para el método de subscribe : https://w3c.github.io/push-api/#dom-pushmanager
Ambos son procesos internos del navegador, ya que implican interactuar con el Servicio Push interno.
Como se indica aquí, el servicio push no está disponible para los desarrolladores: https://developers.google.com/web/fundamentals/push-notifications/how-push-works#who_and_what_is_the_push_service .
Ha habido algunos errores históricos debido a este servicio para Chrome. Puedo ver algunas publicaciones para esto desde Chrome 59.
Por ahora, es posible que desee proteger esta línea de código con detalles de prueba/captura y registro donde puede acceder a ellos registration.pushManager.subscribe(subscribeOptions);
Es posible que simplemente necesite un reintento cuando esto falle o de alguna manera tenga problemas debido a una versión anterior de Chrome.