t_wの輪郭

PWAプッシュ通知
Android Chromeで開発機のlocalhostにつなぐと、Service Workerが動かないスマホでプッシュ通知をタップするとService Workerのコードが表示されるあれService Workerで、オフラインの時だけキャッシュを使う『The service worker lifecycle』

 Android Chromeで開発機のlocalhost(HTTP)上で動かしているウェブサイトに接続するとService Workerが動かない。もしやHTTPSじゃないとService Workerが動かない?

サービスワーカーは、セキュリティ上の理由から HTTPS での実行に制限されています。

ローカルでの開発を容易にするために、 localhost はブラウザーによって安全なオリジンとみなされます。

 あー完全に理解した。ホストしているPCでlocalhostに接続すると動くなーと思ってたらそういう条件なんだ。スマホからパソコンのlocalhostに接続したら特権を失うということなのね。

 Service Workerを使うプッシュ通知のテストを本番環境でやるの、さすがに利用者の迷惑になるだろうから、やめねばと思っている。
 プッシュ通知を登録する人なんて開発者以外に誰もいないでしょと思ってたら、1人いるっぽいんですよね。大切にしたい。

 利用者が1人しかいない中で、本番環境を使ってテストしたくないとかいうのは開発者のエゴだろうか。
 いや、やっぱりちゃんとローカルでテストできるようにしよう。localhostをhttpsで接続できるようにしよう。

self.addEventListener('fetch', event => {
    event.respondWith(
        fetch(event.request).then(response=>{
            //最初にfetchし、fetchに成功したらキャッシュに保存する
            let responseClone = response.clone();
            caches.open(CACHE_NAME).then(cache=>{
                cache.put(event.request, responseClone);
            })
            return response;
        }).catch(error=>{
            //fetchに失敗したらキャッシュを返す;
            console.log(error);
            return caches.match(event.request);
        })
    );
}