🌱
PWAの設定ファイル、Web app manifestの解説
Web app manifest(ウェブアプリマニフェスト)はPWA設置の時、ユーザーデバイスに必要な情報を提供してくれる設定ファイルです。アプリの名前やアイコン情報、アプリが開いた時のURL設定など、色々な情報が設定できます。ファイル名は自由で拡張子は.webmanifest
が求められますが、.json
の形もサポートされます。生成したファイルはプロゼクトのルートディレクトリに位置させてください。
重要マニフェスト属性
属性 | 必須 | A2HS[1]に必要 | 説明 |
---|---|---|---|
name | ⭕️ | ⭕️ | ウェブアプリケーションの名前 |
short_name | ⭕️ | ⭕️ | nameを表示するのに十分なスペースがない場合、表示される名前 |
icons | ⭕️ | ⭕️ | アプリケーションアイコンとして機能する画像ファイル。各オブゼクトにはsrc ,sizes ,type の情報が必要。choromeの場合、少なくとも192x192px ,512x512px 二つのサイズが必要。 |
id | - | - | ウェブアプリケーションの一意な識別子 |
start_url | - | ⭕️ | ウェブアプリケーションの開始 URL |
background_color | - | ⭕️ | スプラッシュ画面で表示される背景色。 CSSのbackground-color と一致させるべきなので、gradient設定などは不可。 |
display | - | ⭕️ | ウェブサイトの表示モード。 既定値はbrowser 。指定されたモードに対応していなかった場合は、定義済みの代替チェーンに従う。(fullscreen → standalone → minimal-ui → browser )[2]
|
display_override | - | - | 表示モードの配列。順番に考慮され、最初にサポートされた表示モードが適用される。[3] |
scope | - | - | アプリケーションコンテキストのナビゲーションスコープ。scope が相対URLなら、ベースURLはマニフェストのURLを元にする。最後にスラッシュ(/)付かないと無効になるので注意。 |
theme_color | - | - | アプリケーションの既定のテーマカラー。head 内のmeta タグと統一させた方が良い |
shortcuts | - | - | ウェブアプリ内の主要なタスクやページへのショートカット及びリンクの配列。ショートカットのオブゼクトの中にはname とurl が必須項目。 |
description | - | - | アプリケーションの目的などを説明。Android Chromeブラウザなら、PWA設置する時のプロムプトにdesctipsion とscreenshots の情報が表示される。 |
screenshots | - | - | アプリケーションのショーケースに向けたスクリーンショットの配列。各オブゼクトにはsrc ,sizes ,type の情報が含まれる。Android Chromeブラウザなら、PWA設置する時のプロムプトにdesctipsion とscreenshots の情報が表示される。イメージは特定基準に従う必要がある。[4]
|
manifestファイルの設定
manifestファイルを生成し、必要な情報を記載しましたら、PWAサイトの全てのページに以下のようにlink
タグを実装してください。SPAなら、index.htmlの<head>
タグ内で追加すれば良いです。
<link rel="manifest" href="/manifest.webmanifest">
manifestファイルの確認
Chrome開発者ツールでapplication
>manifest
で確認できます。
参考:
-
Add To Home Screen(ホーム画面に追加) ↩︎
-
(左)browserモード:アドレスバーとUIあり
(中央)standaloneモード:アドレスバー隠し、UIあり
(右)fullscreenモード:アドレスバーとUI隠し、コンテンツのみを見せる ↩︎ -
{
"display_override": ["window-control-overlay", "minimal-ui"],
"display": "standalone",
}
この場合、standalone
→window-control-overlay
→minimal-ui
の代替チェーンに従う。 ↩︎ -
幅と高さは少なくとも320px、最大3840pxまでなること。最大寸法は最小寸法の 2.3 倍を超えないこと。全てのスクリーンショットのアスペクト比は同じであること。 ↩︎
Discussion