ユーザーが PWA をインストールするときに、ブラウザは PWA を一意に識別する方法が必要です。しかし、最近まで、ウェブアプリ マニフェストの仕様では PWA を一意に識別する方法が明示的に定義されていなかったため、ブラウザが判断し、実装が異なる結果になっていました。ブラウザによっては start_url
が使用され、他のブラウザではマニフェスト ファイルのパスが使用されるため、どちらのフィールドも更新できません。
この問題を解決するため、ウェブアプリ マニフェスト仕様に新しいオプションの id
プロパティが追加されました。これにより、PWA に使用する ID を明示的に定義できます。マニフェストに id
プロパティを追加すると、start_url
またはマニフェストの場所への依存関係が解除され、今後の更新が可能になります。
id
プロパティの機能
id
プロパティは、ブラウザに対する PWA の ID を表します。ブラウザは、インストール済みの PWA と一致する ID がないマニフェストを見つけると、別の PWA と同じ URL から提供された場合でも、そのマニフェストを新しい PWA として扱います。ただし、すでにインストールされている PWA と一致する ID を持つマニフェストが検出されると、そのマニフェストはインストール済みの PWA として扱われます。
ブラウザ サポート
id
プロパティのサポートが Chrome 96 でリリースされました。
id
のないアプリがある場合はどうすればよいですか?
特に何もする必要はありません。ウェブアプリ マニフェストに id
を追加しなくても、(start_url
とマニフェストのパスが同じである限り)問題は発生しません。PWA を将来に備えて対応するには、ウェブアプリ マニフェストに id
プロパティを追加します。
id
を決定して設定するにはどうすればよいですか?
PWA の id
を最も安全かつ正確に決定する方法は、Chrome によって計算された値を確認することです。
- Chrome 96 以降を使用して、DevTools の [Application] パネルの [Manifest] ペインを開きます。
- ウェブアプリ マニフェスト ファイルで
id
が指定されていない場合、[Computed App Id] プロパティの下に注記が表示されます。 - メモに記載されている
id
の値をコピーします(下のスクリーンショットを参照)。 - 注に記載されている
id
値を使用して、ウェブアプリ マニフェストにid
プロパティを追加します。
{
...
id: "/?homescreen=1",
start_url: "/?homescreen=1",
...
}
id
を設定しない場合
ご安心ください。データが破損することはありません。Chrome 96 以降、ウェブアプリ マニフェストの start_url
に基づいて、マニフェストに id
がない場合、ブラウザは id
を生成します。
ウェブアプリ マニフェストに id
を追加すると、start_url
とマニフェスト パスを変更できます(特定の送信元が同じ場合に限ります)。ブラウザは、start_url
やマニフェスト パスではなく、指定された id
に基づいて PWA を識別するためです。
テスト方法
動作をテストする手順は次のとおりです。
- PWA をインストールします。
about://web-app-internals/
を開き、インストールされている PWA のmanifest_id
プロパティとstart_url
プロパティを確認します。- 上記の
id
を特定して設定する方法の手順に沿って、ウェブアプリ マニフェストにid
プロパティを追加します。 chrome://restart
を使用してブラウザを再起動し、about://apps
から PWA を起動してから PWA を閉じて、マニフェスト ファイルを強制的に更新します。about://web-app-internals/
を開き、インストールされている PWA のmanifest_id
プロパティが変更されていないことを確認します。- ウェブアプリ マニフェストの
start_url
を変更します。 chrome://restart
を使用してブラウザを再起動し、about://apps
から PWA を起動してから PWA を閉じて、マニフェスト ファイルを強制的に更新します。about://web-app-internals/
を開き、インストールされている PWA のstart_url
プロパティを確認して、想定どおりに更新されていることを確認します。