Saltar al contenido

Javascript para comprobar si PWA o Mobile Web

Si encuentras alguna incompatibilidad en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

Si esto es para fines analíticos, puede configurar la URL de inicio en el archivo de manifiesto para incluir una consulta string parámetro, por ejemplo:

"start_url": "./?mode=standalone"

Luego, en su JavaScript, puede verificar esta consulta string parámetro.

Actualizado (2020-08-19)

Pete LePage escribió un blog sobre cómo configurar una dimensión personalizada en Google Analytics usando el código a continuación que verifica el modo de visualización usando window.matchMedia:

let displayMode = 'browser';
  const mqStandAlone = '(display-mode: standalone)';
  if (navigator.standalone || window.matchMedia(mqStandAlone).matches) 
    displayMode = 'standalone';
  
ga('set', 'dimension1', displayMode);

Lea más: https://petelepage.com/blog/2020/08/measure-understand-how-installed-pwa-users-differ-from-browser-tab-users/

Actualizado (2017-01-20):

Alternativamente, puede verificar en JavaScript usando:

if (window.matchMedia('(display-mode: standalone)').matches) 
  console.log("This is running as standalone.");

Edición del 11 de octubre de 2019: Se agregó un interruptor adicional para verificar si la aplicación se inicia a través de TWA – document.referrer.includes(‘android-app://’)

Esto funciona para todos: TWA, Chrome y Safari:

const isInStandaloneMode = () =>
      (window.matchMedia('(display-mode: standalone)').matches) || (window.navigator.standalone) || document.referrer.includes('android-app://');

 if (isInStandaloneMode()) 
    console.log("webapp is installed")

if (window.matchMedia('(display-mode: standalone)').matches) 
  console.log("This is running as standalone.");

Esta respuesta es correcta, pero vale la pena mencionar que PWA podría ejecutarse en muchos modos de visualización:

  • pantalla completa
  • ser único
  • interfaz de usuario mínima
  • navegador

Si ejecuta su PWA en un modo de ‘pantalla completa’, volverá false por lo que se necesitan verificaciones adicionales como:

function isPwa() 
    return ["fullscreen", "standalone", "minimal-ui"].some(
        (displayMode) => window.matchMedia('(display-mode: ' + displayMode + ')').matches
    );

Tenga en cuenta que window.matchMedia el cheque regresará true para el modo de visualización ‘navegador’ incluso cuando no es una aplicación PWA instalada.

Si entiendes que te ha resultado provechoso nuestro post, sería de mucha ayuda si lo compartieras con más programadores de esta forma nos ayudas a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *