Las tiendas de aplicaciones proporcionan un espacio para que los desarrolladores muestren sus apps antes de la instalación, con capturas de pantalla y texto informativo que ayudan al usuario a decidir si instalar la app. Una IU de instalación más completa proporciona un espacio similar para que los desarrolladores de apps web inviten a sus usuarios a instalar su app, directamente desde el navegador. Esta IU mejorada está disponible en Chrome para Android y en entornos de escritorio.
Esta IU mejorada está disponible en Chrome para Android y en entornos de computadoras de escritorio.
Instrucción predeterminada
 Diálogo de instalación predeterminado en dispositivos móviles
IU de instalación más completascreenshotsdescription Para obtener el diálogo de la IU de instalación más completa en lugar de la pequeña instrucción predeterminada normal, agrega los campos `screenshots` y `description` a tu manifiesto web.
 IU de instalación más completa en computadoras de escritorio y dispositivos móviles.descriptionscreenshots
El diálogo de la IU de instalación más completa se compone del contenido de los campos `description` y `screenshots` en el manifiesto web. Para activar el diálogo, solo debes agregar al menos una captura de pantalla para el factor de forma correspondiente, pero se recomienda agregar también la descripción.
Consulta las especificaciones de esos campos a continuación.
Capturas de pantalla En tu manifiesto, agregas el miembro screenshots, que toma un array que requiere al menos una imagen y Chrome mostrará hasta ocho. En tu manifiesto, agregas el miembro `screenshots`, que toma un array que requiere al menos una imagen, y Chrome mostrará hasta ocho.
"screenshots": [
{
"src": "source/image1.png",
"sizes": "640x320",
"type": "image/png",
"form_factor": "wide",
"label": "Wonder Widgets"
}
]
A continuación, se muestra un ejemplo.
- Las capturas de pantalla deben cumplir con los siguientes criterios:
- El ancho y la altura deben ser de al menos 320 px y de 3,840 px como máximo.
- Todas las capturas de pantalla con el valor de mismo factor de forma deben tener relaciones de aspecto idénticas.
- Todas las capturas de pantalla con el _mismo valor de factor de forma_ deben tener _relaciones de aspecto idénticas_.
- Solo se admiten los formatos de imagen JPEG y PNG. Solo se mostrarán ocho capturas de pantalla.
Si se agregan más, el agente de usuario simplemente los ignora.
El form_factor indica al navegador si la captura de pantalla debe aparecer en entornos de escritorio (wide) o móviles (narrow).
`form_factor` indica al navegador si la captura de pantalla debe aparecer en entornos de computadoras de escritorio (`wide`) o dispositivos móviles (`narrow`).
El miembro description describe la aplicación en el mensaje de instalación, para invitar al usuario a conservar la aplicación.
El miembro description describe la aplicación en la instrucción de instalación para invitar al usuario a conservar la app.
El diálogo se mostrará incluso sin una `description`, pero se recomienda.
{
…
"description": "Compress and compare images with different codecs
right in your browser."
}
 Se truncan las descripciones más largas.
La descripción aparece en la parte superior de la instrucción de instalación. Es posible que hayas notado en las capturas de pantalla que los diálogos de instalación también muestran el origen de la app.
Los orígenes que son demasiado largos para ajustarse a la IU se truncan. Esto también se conoce como elisión y se usa como medida de seguridad para proteger a los usuarios.
IU de instalación más completa disponible para computadoras de escritorio
Demostración
<!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();
});
}