App-Shops bieten Entwicklern die Möglichkeit, ihre Apps vor der Installation zu präsentieren. Screenshots und Textinformationen helfen dem Nutzer bei der Entscheidung, die App zu installieren. Die erweiterte Installations-UI bietet Web-App-Entwicklern eine ähnliche Möglichkeit, Nutzer direkt über den Browser zur Installation ihrer App einzuladen. Die verbesserte Benutzeroberfläche ist in Chrome für Android und auf Computern verfügbar.
Standard-Prompt
Im folgenden Beispiel sehen Sie die Standarddarstellung, die nicht genügend Kontext bietet.


Detailliertere Installations-UI
Wenn Sie das Dialogfeld mit der erweiterten Installations-UI anstelle des normalen kleinen Standard-Prompts erhalten möchten, fügen Sie Ihrem Webmanifest die Felder screenshots
und description
hinzu. Sehen Sie sich das folgende Beispiel für Squoosh.app an:

Das Dialogfeld „Richer Install UI“ besteht aus dem Inhalt der Felder description
und screenshots
im Webmanifest.
Um den Dialog auszulösen, müssen Sie nur mindestens einen Screenshot für den entsprechenden Formfaktor hinzufügen. Es wird jedoch empfohlen, auch die Beschreibung hinzuzufügen. Unten finden Sie weitere Informationen zu diesen Feldern.
Screenshots
Screenshots machen die neue Installations-UI wirklich „reichhaltiger“ und wir empfehlen dringend, sie zu verwenden. Fügen Sie in Ihrem Manifest das Element screenshots
hinzu, das ein Array mit mindestens einem Bild enthält. Chrome zeigt bis zu acht Bilder an. Hier ein Beispiel:
"screenshots": [
{
"src": "source/image1.png",
"sizes": "640x320",
"type": "image/png",
"form_factor": "wide",
"label": "Wonder Widgets"
}
]
Screenshots müssen die folgenden Kriterien erfüllen:
- Breite und Höhe müssen mindestens 320 Pixel und höchstens 3.840 Pixel betragen.
- Die Maximalgröße darf nicht mehr als das 2,3-Fache der Mindestgröße betragen.
- Alle Screenshots mit demselben Wert für Formfaktor müssen identische Seitenverhältnisse haben.
- Es werden nur die Bildformate JPEG und PNG unterstützt.
- Es werden nur acht Screenshots angezeigt. Wenn weitere hinzugefügt werden, ignoriert der User-Agent sie einfach.
Außerdem müssen Sie die Größe und den Typ des Bildes angeben, damit es richtig gerendert wird.
Mit form_factor
wird dem Browser mitgeteilt, ob der Screenshot auf Computern (wide
) oder auf Mobilgeräten (narrow
) angezeigt werden soll.
Beschreibung
Das description
-Element beschreibt die Anwendung im Installationsaufforderungsfeld, um den Nutzer dazu aufzufordern, die App zu behalten.
Das Dialogfeld wird auch ohne description
angezeigt, es wird jedoch empfohlen.
Nach 7 Textzeilen (etwa 324 Zeichen) wird die Beschreibung abgeschnitten und eine Ellipse angehängt.
{
…
"description": "Compress and compare images with different codecs
right in your browser."
}


Die Beschreibung wird oben im Installationsaufforderungsfeld angezeigt.
Wie Sie auf den Screenshots sehen können, wird in den Installationsdialogfeldern auch der Ursprung der App aufgeführt. Ursprünge, die zu lang für die Benutzeroberfläche sind, werden gekürzt. Dies wird auch als Auslassung bezeichnet und dient als Sicherheitsmaßnahme zum Schutz der Nutzer.
Weitere Informationen
Demo
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="color-scheme" content="dark light" />
<link rel="manifest" href="manifest.json" />
<title>How to add Richer Install UI to your web app</title>
<!-- TODO: Devsite - Removed inline handlers -->
<!-- <script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('sw.js');
});
}
</script>
<script type="module" src="script.js"></script> -->
</head>
<body>
<h1>How to add Richer Install UI to your web app</h1>
<ol>
<li>
Install the app by clicking the button below. After the installation,
the button is disabled.
<p>
<button disabled type="button">Install</button>
</p>
</li>
<li>
When you click on install a dialog similar to the ones from app stores
will be displayed.
</li>
<li>
The dialog includes the `description` and `screenshots` set in the app
manifest.
</li>
<li>
Screenshots should be different depending if the app is being installed
on a mobile or desktop device, according to the `form_factor` value set
for the screenshots on the manifest
</li>
</ol>
</body>
</html>
JS
// The install button.
const installButton = document.querySelector('button');
// Only relevant for browsers that support installation.
if ('BeforeInstallPromptEvent' in window) {
// Variable to stash the `BeforeInstallPromptEvent`.
let installEvent = null;
// Function that will be run when the app is installed.
const onInstall = () => {
// Disable the install button.
installButton.disabled = true;
// No longer needed.
installEvent = null;
};
window.addEventListener('beforeinstallprompt', (event) => {
// Do not show the install prompt quite yet.
event.preventDefault();
// Stash the `BeforeInstallPromptEvent` for later.
installEvent = event;
// Enable the install button.
installButton.disabled = false;
});
installButton.addEventListener('click', async () => {
// If there is no stashed `BeforeInstallPromptEvent`, return.
if (!installEvent) {
return;
}
// Use the stashed `BeforeInstallPromptEvent` to prompt the user.
installEvent.prompt();
const result = await installEvent.userChoice;
// If the user installs the app, run `onInstall()`.
if (result.outcome === 'accepted') {
onInstall();
}
});
// The user can decide to ignore the install button
// and just use the browser prompt directly. In this case
// likewise run `onInstall()`.
window.addEventListener('appinstalled', () => {
onInstall();
});
}