最小構成のPWAを構築するには?

最小構成のPWAを構築するには?

最小構成でPWAを実装するための各種設定です。

HTML

manifest.jsonの読み込み

<link rel="manifest" href="/manifest.json">

iOSが完全にPWAに対応していないので、iOS用の設定が必要です。

<meta name="apple-mobile-web-app-capable" content="yes">
 
<link rel="apple-touch-icon" href="/static/img/icons/icon-180x180.png" sizes="180x180">
<link rel="apple-touch-icon" href="/static/img/icons/icon-192x192.png" sizes="192x192">
<link rel="apple-touch-icon" href="/static/img/icons/icon-512x512.png" sizes="512x512">

Service Workerを読み込む設定。

<script>
if('serviceWorker' in navigator){
  navigator.serviceWorker.register('/sw.js').then(function(){ console.log('Service Worker Registered'); });
}
</script>

manifest.json

manifest.jsonにアプリ名などを設定します。

{
  "name": "Application",
  "short_name": "App",
  "background_color": "#fff",
  "icons": [
    {
      "src": "/static/img/icons/icon-180x180.png",
      "sizes": "180x180",
      "type": "image/png"
    },
    {
      "src": "/static/img/icons/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/static/img/icons/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ],
  "scope": "/",
  "start_url": "/?utm_source=homescreen",
  "display": "standalone"
}

ServiceWorker

特に何もしないServiceWorker

// sw.js
self.addEventListener('install', function(e) {
  console.log('[ServiceWorker] Install');
});
 
self.addEventListener('activate', function(e) {
  console.log('[ServiceWorker] Activate');
});
 
self.addEventListener('fetch', function(event) {});

アイコンの生成

アイコンは、以下のツールのいずれかを使用することで作成できます。