3
2

More than 3 years have passed since last update.

最小 PWA を探ってみた

Posted at

はじめに

PWA について、Android 版 Chrome が「インストールしますか?」と尋ねてくる最小の内容って何なのか、試してみました。
(オフライン動作は目指していません。)

結論

項目 内容
icon 1つでOK
Service Worker fetch イベントのリスナーのみでOK
fetch リスナー 空でOK

サンプル

manifest.json
{
  "name": "minimum",
  "display": "standalone",
  "start_url": "https://foo.bar/index.html",
  "icons": [
    {
      "type": "image/png",
      "src": "assets/images/icon-512.png",
      "sizes": "512x512"
    }
  ]
}

manifest.json の項目は Chrome のバージョンによって増減があるかと思います。上記は 81.0.4044.117 で確認しました。
アイコンは大は小を兼ねる発想で 512x512 にしておきました。

index.html
<html>
  <head>
    <title>minimum</title>
    <link rel='manifest' href='manifest.json' />
    <link rel='icon'     href='assets/images/icon-512.png' />
  </head>
  <body>
    <center>
      <img src='assets/images/icon-512.png' />
    </center>

    <script>
      if ( 'serviceWorker' in navigator ) {
        navigator.serviceWorker.register('service-worker.js')
          .then(function() {
            console.log('ServiceWorker was registered.');
          });
      }
    </script>
  </body>
</html>

favicon は必須じゃないですし body も真っ白でもいいと思いますが、せっかくモノがあるので書いておきました。
逆に register()catch() 書いたほうがいいですね。

service-worker.js
self.addEventListener('fetch', function(event) {});

install イベントは予めキャッシュにファイルを入れておく機会として利用できますが、利用しなくても別に問題ないです。
activate イベントは古い世代のキャッシュを削除する機会として利用できますが、利用しなくても別に問題ないです。

いずれも fetch が正しく機能するために必要なら利用すればいい、という感じでしょうか。

おわりに

行儀が良いとは言えないですが、「ホームにアイコン設置」が目的ならば、最小の内容でも十分かと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2