3

Service Workers について言えば、プッシュ通知が到着すると、それらの通知でユーザーのクリックを処理できます。

たとえば、まだ開いていない場合は、ブラウザーの新しいタブで URL を開きます。しかし、(HomeScreen に追加された) デスクトップ Web アプリがある場合、どうすればそれを開くことができるでしょうか?

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);
            }
        })
    );
});

このコードでは、clients.openWindow(url); 常にブラウザでアプリを開きます。

4

1 に答える 1

0

URL スキームを使用して (つまり を使用してclients.openWindow()) パッケージ化されたアプリを起動する方法はまだありません。カスタム URL スキームを使用してアプリを起動できるようにする積極的な提案chrome-app://APP_IDがあります。

これを解決する方法 ( @kzahelの提案に基づく) は、登録されたコンテキスト メニューを持つ拡張機能を使用し、何らかの方法で拡張機能にアプリを開くように指示することです。

于 2016-08-03T23:50:28.797 に答える