Publicado en 21. marzo 2024 por Jan Bunk
Hay muchos casos en los que puede ser útil diferenciar entre una persona que está viendo tu sitio web en el navegador y una persona que lo está viendo a través de tu app. Tal vez quieras ver las analíticas de la adopción de tu aplicación por parte de los usuarios o quieras mostrar contenidos diferentes a los usuarios de la aplicación.
Al igual que hay múltiples casos de uso, también hay múltiples formas de lograr este objetivo. Veámoslas una a una.
El agente de usuario es una cadena corta que el navegador envía a los sitios web cada vez que carga una página. El agente de usuario contiene información sobre el navegador, por ejemplo un navegador Firefox podría enviar algo como este agente de usuario:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0A partir de ahí, tu sitio web puede detectar que el usuario utiliza la versión 47.0 del navegador Mozilla Firefox. Al igual que los navegadores, tu aplicación también envía un agente de usuario que la identifica.
La app utiliza algunos agentes de usuario diferentes:
$version es la versión interna de la aplicación (por ejemplo, 1.4.8+52) y $operatingSystem es la plataforma en la que se utiliza la aplicación (por ejemplo, ios o android).
$regularUserAgent es el agente de usuario de un navegador móvil que se esperaría del dispositivo, como Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
Así, un ejemplo de agente de usuario que la aplicación podría utilizar en iOS sería: Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 App-WebView (ios) 1.4.8+52
Basándote en el formato de agente de usuario anterior, puedes detectar que tu sitio web está siendo cargado por la aplicación comprobando si el agente de usuario contiene "App-WebView". Si quieres comprobar también el sistema operativo, puedes comprobar adicionalmente si el agente de usuario contiene también "(android)" o "(ios)".
Si utilizas WordPress, puedes utilizar el plugin "UserAgent Content Switcher". El nombre del plugin es bastante descriptivo: te permite mostrar contenido diferente a los usuarios en función de su agente de usuario. He aquí cómo puedes configurarlo (y un ejemplo de uso):
Este texto es visible para todos.
[agentsw ua='app']
¡Este texto sólo es visible para los usuarios de la app!
[/agentsw]
Por supuesto, no sólo puedes comprobar el agente de usuario en el lado del servidor (como se detalla en la sección anterior), sino también en JavaScript.
He aquí un ejemplo de cómo puedes utilizar JavaScript para detectar si el usuario está utilizando la aplicación o un navegador:
const isApp = navigator.userAgent.includes("App-WebView");
if (isApp) {
console.log("The user is using the app.");
} else {
console.log("The user is using a browser.");
}
Como alternativa, puedes utilizar getAppPlatform
desde el script de ayuda de la aplicación, que funciona de forma muy similar.
La aplicación realiza pequeños cambios invisibles en el HTML del sitio web que son necesarios para algunas funciones de la aplicación. También podemos utilizar estos cambios para detectar si la página ha sido cargada por la aplicación.
Como esto es un poco complicado, te recomendamos que utilices ejecutarCuandoAplicaciónEstéPreparada
desde el script de ayuda de la aplicación.
Entonces puedes poner cualquier código dentro de la función executeWhenAppReady
, y sólo se ejecutará si la página ha sido cargada por la aplicación.
Un pequeño inconveniente de este método es que el código tarda unos milisegundos en ejecutarse, aunque la aplicación haya cargado la página.
En la página de personalización de tu sitio web tienes la opción de añadir cualquier JavaScript o CSS que la aplicación deba inyectar en cada página que se cargue. Las posibilidades son infinitas con esto, pero como ejemplo, hagamos que este texto sea verde en la aplicación:
<p id="red-text" style="color: red;">This text is red in the browser.</p>
Ahora podríamos configurar este JavaScript para inyectarlo:
document.getElementById("red-text").style.color = "green";
O alternativamente, este CSS para inyectar:
#red-text {
color: green !important;
}
Así que, como puedes ver, esto también sirve para tener un comportamiento diferente en el sitio web que en la aplicación.
Artículos relacionados
Aplicaciones Web Progresivas vs. Aplicaciones Nativas
¿Quieres llevar tu sitio web al siguiente nivel? He aquí cómo las aplicaciones web progresivas se comparan con las aplicaciones nativas estándar y cómo convertir tu sitio web en una aplicación.
Convierte tu página web en una app
Convierte tu sitio web en una aplicación para aprovechar las notificaciones push, mejorar el conocimiento de marca y mucho más. Sin necesidad de programar nada.
Diferencias entre las apps de Android y iOS
En este artículo se repasan los beneficios que las apps de Android tienen sobre las apps de iOS, y en cuál caso una app de iOS es la mejor opción para tu página web.
¡Hola, me llamo Jan! En 2019, creé webtoapp.design mientras estudiaba informática en la universidad. Desde entonces han cambiado muchas cosas: me gradué y ahora existe un equipo completo que dirige webtoapp.design. Hemos crecido hasta convertirnos en un equipo global y totalmente remoto, que ha acumulado mucha experiencia en el desarrollo y la publicación de aplicaciones. Hemos creado y publicado cientos de aplicaciones en las app stores, donde se han descargado cientos de miles de veces.