Cambios para agregar al comportamiento de la pantalla principal

Desde que lanzamos el banner para agregar a la pantalla principal, trabajamos para etiquetar las apps web progresivas de forma más clara y simplificar la forma en que los usuarios pueden instalarlas. Nuestro objetivo final es proporcionar un botón de instalación en la barra de direcciones en todas las plataformas, y en Chrome 68 estamos realizando cambios para lograrlo.

¿Qué cambios implementaremos?

A partir de Chrome 68 para Android (estable en julio de 2018), Chrome ya no mostrará el banner para agregar a la pantalla principal. Si el sitio cumple con los criterios para agregar a la pantalla principal, Chrome mostrará la minibarra de información. Luego, si el usuario hace clic en la barra de información mini 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 Chrome 67 y versiones anteriores

Captura de pantalla del banner de A2HS

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

O

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

Barra de información mini 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 para agregar a la pantalla principal.

Si un usuario la descarta, no se mostrará hasta que transcurra un período suficiente (~3 meses).

Se muestra independientemente de 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 de la barra omni.

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 minibarra de información en Chrome 68 y versiones posteriores.

O

Aparece 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 minibarra de información

Captura de pantalla de la barra de información.
La minibarra de información

La minibarra de información 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 lo descarte, no volverá a aparecer hasta que haya transcurrido un tiempo suficiente (actualmente, 3 meses). La minibarra de información aparecerá cuando el sitio cumpla con los criterios para agregar a la pantalla principal, independientemente de si preventDefault() en el evento beforeinstallprompt o no.

Primer concepto del botón de instalación en la barra omni.
Concepto inicial del botón de instalación en el cuadro multifunción
La minibarra de información es una experiencia provisional para 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 de instalación en una app web progresiva para computadoras.
Botón de instalación en una app web progresiva para computadoras

En lugar de solicitarle al usuario que realice la acción durante la carga de la página (un antipatrón para las solicitudes de permisos), puedes indicar que tu app se puede instalar con alguna IU, que luego mostrará el mensaje de instalación modal. Por ejemplo, esta AWP para computadoras de escritorio agrega un botón "Install App" justo encima del nombre del perfil del usuario.

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

Cómo detectar 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 a la pantalla principal). Sin embargo, si el usuario desinstala la app más adelante, el evento beforeinstallprompt se volverá a activar en cada navegación de página.

Cómo mostrar el diálogo con prompt()

Diálogo para agregar a la pantalla principal.
Diálogo para agregar a la pantalla principal

Para mostrar el diálogo de 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, escucha 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 el usuario la responde.

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 siguiente navegación de página. A diferencia de las solicitudes de permisos tradicionales, hacer clic en Cancelar no bloqueará las llamadas futuras a prompt(), ya que se debe llamar a esta dentro de un gesto del usuario.

Recursos adicionales

Consulta Banners de instalación de apps para obtener más información, como la siguiente:

  • Detalles del evento beforeinstallprompt
  • Seguimiento de la respuesta del usuario a la solicitud de agregar a la pantalla principal
  • Seguimiento de si se instaló la app
  • Cómo determinar si tu app se ejecuta como una app instalada