PWAアイコン: アプリをインストール可能にする
インストールプロンプトはデザインの選択ではなく、チェックリストです。192や512のアイコンを1つでも忘れると、ブラウザは何も言わずにインストールの提案を拒否します。ここに正確なセットを示します。
インストールプロンプトはアイコンに左右される
ブラウザは、manifestが一連の要件を満たしたときにのみPWAのインストールを提案し、アイコンはその1つです。具体的には、icons配列に少なくとも192x192と512x512のPNGを含める必要があります。どちらかを忘れるとプロンプトは決して発火せず、ユーザーが気づくようなエラーも出ません。
192はランチャーアイコンです。512はスプラッシュ画面と高密度ディスプレイに使われます。どちらもその正確な寸法の実際のPNGである必要があり、CSSで引き伸ばした1枚の画像ではいけません。
インストール可能にする
- 1
必須の2つのPNGを書き出す
192x192のicon-192.pngと512x512のicon-512.pngを作成します。この2つがインストールプロンプトのチェック対象です。
- 2
maskableバージョンを追加する
マークをセーフゾーン内に中央配置し、周囲にパディングを付けた512x512を書き出し、purpose: maskableとして指定します。これでAndroidが円、squircle、角丸の四角に切り抜けます。
- 3
すべてmanifestに記載する
各アイコンをmanifestのicons配列にsrc、sizes、type、purposeとともに入れます。正確な形は下のコードを参照してください。
- 4
manifestとapple-touch-iconをリンクする
headに<link rel="manifest" href="/manifest.json">と、別途<link rel="apple-touch-icon">を追加します。iOSはmanifestではなく後者を読みます。
- 5
プロンプトを検証する
サイトをChromeで開き、インストールのコントロールが表示されるか確認し、ブラウザの開発者ツールのapplicationパネルでmanifestにエラーがないことを確かめます。
manifestのicons配列
{
"name": "Your App",
"short_name": "App",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#1a1a1a",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}purpose anyの192と512がインストール要件を満たします。maskableのエントリは、Androidがマークを切り取らずにアイコンの形を整えられるようにします。
maskableが別になっている理由
Androidのランチャーは、デバイスのテーマが使う形に合わせてアイコンを切り抜きます。四角全体を埋める通常のアイコンは、角が切り落とされます。maskableアイコンはマークをパディング付きのセーフゾーンに中央配置しているので、ランチャーは重要な部分に触れずに端を切り抜けます。
maskableと並べて、purpose anyのアイコンも残しておきます。マスクしない表示面(タブ、タスク切り替え画面)はanyバージョンを使うので、余分なパディングが残らずに済みます。
よくある質問
PWAのインストールプロンプトが表示されないのはなぜですか?
アイコンに関する最も一般的な原因は、manifestのicons配列に192x192または512x512のPNGが欠けていることです。どちらも必須です。あわせて、manifestがリンクされ配信されているか、アプリがservice worker付きのHTTPS上にあるかも確認しましょう。
PWAにはどのアイコンサイズが必要ですか?
インストールプロンプトにはmanifest内の192x192と512x512のPNGが必須です。Android用に512x512のmaskableバージョンと、iOS用に180x180のapple-touch-iconを追加しましょう。
maskableアイコンは必要ですか?
Androidには必要です。ないと、ランチャーはフルブリードのアイコンを切り抜いて角を切り落とします。maskableアイコンはマークをセーフゾーン内に保つので、どんな形でも生き残ります。
manifestはiOSのホーム画面アイコンを設定しますか?
いいえ。iOSはホーム画面に追加についてmanifestのiconsを無視します。apple-touch-iconのlinkタグを使うので、manifestが完備していてもheadに1つ必要です。