pestaña de enfoque de los trabajadores de servicio: los clientes están vacíos en la notificación

Tengo un escenario de trabajador de servicio común, donde quiero obtener un clic de notificación y enfocar la pestaña de donde proviene la notificación. Sin embargo, la variable clientes siempre está vacía, su longitud es 0

console.log("sw startup");
self.addEventListener('install', function (event) {
    console.log("SW installed");
});

self.addEventListener('activate', function (event) {
    console.log("SW activated");
});
self.addEventListener("notificationclick", function (e) {
    // Android doesn't automatically close notifications on click 
    console.log(e);
    e.notification.close();
  
    // Focus tab if open
    e.waitUntil(clients.matchAll({
        type: 'window'
    }).then(function (clientList) {
        console.log("clients:" + clientList.length);
        for (var i = 0; i < clientList.length; ++i) {
            var client = clientList[i];
            if (client.url === '/' && 'focus' in client) {
                return client.focus();
            }
        }

        if (clients.openWindow) {
            return clients.openWindow('/');
        }
    }));
    
});

Y el registro es este:

 this.doNotify = function (notification) {      
        if ('serviceWorker' in navigator) {
            navigator.serviceWorker.register('sw.js').then(function (reg) {
               
                requestCreateNotification(notification, reg);
            }, function (err) {
                console.log('sw reg error:' + err);
            });
        }
   ...
   }

chrome: // serviceworker-internals / output muestra que el registro y la instalación están bien. Sin embargo, cuando se envía una notificación, clientList está vacío. He intentado eliminar el tipo de filtro: 'ventana' pero el resultado sigue siendo el mismo. Como los clientes están vacíos, siempre se abre una nueva ventana. ¿Qué estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta