Cambios para agregar al comportamiento de la pantalla principal

Desde que lanzamos el banner "Agregar a la pantalla principal", trabajamos para etiquetar las apps web progresivas con mayor claridad y simplificar la forma en que los usuarios pueden instalarlas. Nuestro objetivo final es proporcionar un botón de instalación en el cuadro multifunción en todas las plataformas y, en Chrome 68, haremos cambios para lograr ese objetivo.

¿Qué cambios implementaremos?

A partir de Chrome 68 en Android (estable en julio de 2018), Chrome ya no mostrará el banner que permite agregar a la pantalla principal. Si el sitio cumple con los criterios para agregar a la pantalla principal, Chrome mostrará la barra de información en miniatura. Luego, si el usuario hace clic en la minibarra de información o llamas a prompt() en el evento beforeinstallprompt desde un gesto del usuario, Chrome mostrará un diálogo modal para agregar a la pantalla principal.

Banner de A2HS en Chrome 67 y versiones anteriores

Captura de pantalla del banner de A2HS

Se muestra automáticamente cuando el sitio cumple con los criterios para agregar a la pantalla principal y no llama a preventDefault() en el evento beforeinstallprompt.

O

Se muestra llamando a prompt() en el evento beforeinstallprompt.

Minibar de información Chrome 68 y versiones posteriores

Captura de pantalla de la barra de información de A2HS
Se muestra cuando el sitio cumple con los criterios de agregar a la pantalla principal.

Si un usuario la descarta, no se mostrará hasta que haya transcurrido un período suficiente (alrededor de 3 meses).

Se muestra sin importar si se llamó a preventDefault() en el evento beforeinstallprompt.

Este tratamiento de la IU se quitará en una versión futura de Chrome cuando se presente el botón de instalación del cuadro multifunción.

Diálogo de A2HS

Captura de pantalla del diálogo de A2HS

Se muestra llamando a prompt() desde un gesto del usuario en el evento beforeinstallprompt en Chrome 68 y versiones posteriores.

O

Se muestra cuando un usuario presiona la barra de información en miniatura en Chrome 68 y versiones posteriores.

O

Se muestra después de que el usuario hace clic en "Agregar a la pantalla principal" en el menú de Chrome en todas las versiones de Chrome.

La minibar de información

Captura de pantalla de la minibar de información.
La minibar de información

La barra de información en miniatura es un componente de la IU de Chrome y el sitio no puede controlarla, pero el usuario puede descartarla fácilmente. Una vez que el usuario la descarta, no volverá a aparecer hasta que haya transcurrido un tiempo suficiente (actualmente, 3 meses). La barra de información en miniatura aparecerá cuando el sitio cumpla con los criterios para agregar a la pantalla principal, independientemente de que uses preventDefault() en el evento beforeinstallprompt o no.

Concepto anticipado del botón de instalación en el cuadro multifunción.
Concepto inicial del botón de instalación en el cuadro multifunción
La minibarra de información es una experiencia provisional de Chrome en Android mientras trabajamos para crear una experiencia coherente en todas las plataformas que incluya un botón de instalación en el cuadro multifunción. ## Activación del diálogo para agregar a la pantalla principal
Botón Instalar en una app web progresiva para computadoras de escritorio.
Botón de instalación en una aplicación web progresiva para computadoras de escritorio

En lugar de solicitar al usuario que se cargue la página (un antipatrón para solicitudes de permisos), puedes indicar que tu app se puede instalar con alguna IU, lo que mostrará la solicitud de instalación modal. Por ejemplo, esta AWP de escritorio agrega el botón "Instalar app" justo encima del nombre de perfil del usuario.

Solicitar que se instale tu app mediante un gesto del usuario parece menos spam para el usuario y aumenta la probabilidad de que haga clic en "Agregar" en lugar de "Cancelar". La incorporación de un botón de instalación en tu app significa que, incluso si el usuario elige no instalarla hoy, este seguirá allí mañana o cuando esté listo para hacerlo.

Escuchando el evento beforeinstallprompt

Si tu sitio cumple con los criterios para agregar a la pantalla principal, Chrome activará un evento beforeinstallprompt, guardará una referencia al evento y actualizará la interfaz de usuario para indicar que el usuario puede agregar tu app a su pantalla principal.

let installPromptEvent;

window.addEventListener('beforeinstallprompt', event => {
  // Prevent Chrome <= 67 from automatically showing the prompt
  event.preventDefault();
  // Stash the event so it can be triggered later.
  installPromptEvent = event;
  // Update the install UI to notify the user app can be installed
  document.querySelector('#install-button').disabled = false;
});

El evento beforeinstallprompt no se activará si la app ya está instalada (consulta los criterios para agregar contenido a la pantalla principal). Sin embargo, si el usuario desinstala la app más tarde, se volverá a activar el evento beforeinstallprompt en cada navegación de la página.

Se muestra el diálogo con prompt()

Diálogo Agregar a la pantalla principal
Diálogo Agregar a la pantalla principal

Para mostrar el diálogo Agregar a la pantalla principal, llama a prompt() en el evento guardado desde un gesto del usuario. Chrome mostrará el diálogo modal y le pedirá al usuario que agregue tu app a su pantalla principal. Luego, busca la promesa que muestra la propiedad userChoice del evento beforeinstallprompt. La promesa muestra un objeto con una propiedad outcome después de que se muestra la solicitud y de que el usuario la haya respondido.

btnInstall.addEventListener('click', () => {
  // Update the install UI to remove the install button
  document.querySelector('#install-button').disabled = true;
  // Show the modal add to home screen dialog
  installPromptEvent.prompt();
  // Wait for the user to respond to the prompt
  installPromptEvent.userChoice.then(choice => {
    if (choice.outcome === 'accepted') {
      console.log('User accepted the A2HS prompt');
    } else {
      console.log('User dismissed the A2HS prompt');
    }
    // Clear the saved prompt since it can't be used again
    installPromptEvent = null;
  });
});

Solo puedes llamar a prompt() en el evento diferido una vez. Si el usuario hace clic en Cancelar en el diálogo, deberás esperar hasta que se active el evento beforeinstallprompt en la navegación de la página siguiente. A diferencia de las solicitudes de permisos tradicionales, hacer clic en Cancelar no bloqueará las futuras llamadas a prompt(), ya que esta debe llamarse dentro de un gesto del usuario.

Recursos adicionales

Para obtener más información, consulta los banners de instalación de apps, incluidos los siguientes:

  • Detalles del evento beforeinstallprompt
  • Seguimiento de la respuesta del usuario al mensaje para agregar la pantalla principal
  • Cómo realizar un seguimiento de si se instaló la app
  • Cómo determinar si tu app se ejecuta como una app instalada