es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Acción de clic en la notificación web de FCM enfocada en la última pestaña.

Tengo un problema con las notificaciones web de fcm.

El problema solo ocurre en dispositivos ANDROID.

Funciona en todas estas situaciones al abrir una nueva pestaña:
– chrome está completamente cerrado
– chrome está abierto y tiene una pestaña activa con el dominio fuente

Pero si dejo chrome abierto en segundo plano durante algún tiempo, cuando llega la notificación, me pone el enfoque en la última pestaña sin poder acceder a la acción “click”.

self.addEventListener('notificationclick', function (event) {
        var url = event.notification.data;
        console.log('On notification click: ', event);
        event.notification.close(); // Android necesita cerrarse explícitamente.
        event.waitUntil(
            clients.matchAll({ includeUncontrolled: true, type: 'window' }).then(windowClients => {
                // Verifica si ya hay una ventana/pestaña abierta con la URL objetivo
                for (var i = 0; i < windowClients.length; i++) {
                    var client = windowClients[i];
                    // Si es así, solo enfócala.
                    if (client.url === url && 'focus' in client) {
                        // return client.focus();
                    }
                }
                // Si no, abre la URL objetivo en una nueva ventana/pestaña.
                if (clients.openWindow) {
                    // document.cookie = 'notificationDisabledBool=false; expires=Sun, 1 Jan 2026 00:00:00 UTC; path=/'
                    // return clients.openWindow(url);
                }
                return clients.openWindow(url);
            })
        );
});

He eliminado client.focus() y he dejado solo openWindow().

¿Dónde está el problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el método client.focus() que se utiliza para enfocar en una pestaña existente si coincide con la URL objetivo. En algunos casos, esto parece no funcionar y evita que la acción de click funcione correctamente. Al eliminar esta línea, el código simplemente debería abrir la URL objetivo en una nueva pestaña en lugar de intentar enfocarse en una existente, lo que debería solucionar el problema.

Comments are closed.