Нажмите веб-API, уведомление, как открыть настольный клиент вместо открытия нового клиента браузера

Говоря о сервис-воркерах, когда приходят push-уведомления, мы можем обработать пользовательский клик в этих уведомлениях,

например, открытие URL-адреса в новой вкладке браузера, если он еще не открыт. Но если бы у нас было настольное веб-приложение (добавленное на HomeScreen), как мы могли бы его открыть?

self.addEventListener('notificationclick', function(event) {
    console.log('Notification click: tag ', event.notification.tag);
    event.notification.close();
    var url = 'https://youtu.be/gYMkEMCHtJ4';
    event.waitUntil(
        clients.matchAll({
            type: 'window'
        })
        .then(function(windowClients) {
            for (var i = 0; i < windowClients.length; i++) {
                var client = windowClients[i];
                if (client.url === url && 'focus' in client) {
                    return client.focus();
                }
            }
            if (clients.openWindow) {
                return clients.openWindow(url);
            }
        })
    );
});

В этом коде client.openWindow(url); всегда будет открывать приложение в браузере.


person Mario    schedule 10.04.2016    source источник
comment
Что вы подразумеваете под десктопным веб-приложением? (Кроме того, для справки: на мобильном телефоне нажатие на уведомление откроет полноэкранный режим, если сайт был добавлен на главный экран один раз bugs.chromium.org/p/chromium/issues/detail?id=541711.)   -  person mjs    schedule 13.04.2016
comment
Вам удалось это решить, ? я тоже пытаюсь с этим бороться   -  person 32teeths    schedule 23.06.2016


Ответы (1)


Невозможно запустить упакованное приложение с использованием схемы URL (т. е. с использованием clients.openWindow())... пока. Существует активное предложение разрешить запуск приложений с помощью URL-схема chrome-app://APP_ID.

Способ решить эту проблему (на основе предложения @kzahel) состоит в том, чтобы использовать расширение с зарегистрированным контекстным меню и затем каким-то образом скажите расширениям, чтобы открыть приложение.

person Xeos    schedule 03.08.2016