web-dev-qa-db-fra.com

Android, agent utilisateur WebView vs agent utilisateur de navigateur

Je construis mon site Web et je veux savoir si l'utilisateur utilise le navigateur Android ou une application avec WebView.

c'est possible ??

18
a fair player

FROM: http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html

Avec un agent utilisateur comme celui-ci:

Mozilla/5.0 (Linux; U; Android 3.0; fr-fr; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, comme Gecko) Version/4.0 Safari/534.13

en l'absence de chaîne «mobile», fournissez à cet utilisateur la version de bureau (ou une version personnalisée pour les appareils tactiles Android à grand écran). User-Agent nous dit qu’ils proviennent d’un appareil grand écran, la tablette XOOM. 

D'autre part, cet utilisateur-agent:

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, comme Gecko) Version/4.0 Mobile Safari/533.1

contient «mobile» et «Android», alors servez l'internaute sur ce Nexus One pour une expérience mobile!

FROM https://stackoverflow.com/a/7327201

il semble que l'agent utilisateur soit identique dans la vue Web que dans le navigateur mobile par défaut

12
Matthew

Selon Documents de développement Chrome : "Si vous essayez de différencier WebView et Chrome pour Android, vous devez rechercher la présence de la chaîne Version/XX dans la chaîne d'agent d'utilisateur WebView. "

12
Miguel Andres

FYI: Cela ne peut pas être fait avec des agents utilisateurs, mais cela peut être détecté. Les vues Web d'Android envoient un en-tête d'addition "X-Requested-With". La valeur de cet en-tête sera l'espace de noms de l'application qui exécute la vue Web.

Par exemple, le navigateur Dolphin envoie: "mobi.mgeek.TunnyBrowser" Mon application de test a envoyé: "com.jamestymann.identifyawebview".

En réalité, le navigateur standard n'envoie pas cet en-tête, il est donc très facile de les détecter. 

J'ai deux mises en garde cependant:

  • "X-Requested-With" est un en-tête standard et pourrait potentiellement être envoyé à partir de pages Web/navigateurs complets depuis des ordinateurs de bureau. (Par exemple, ceci est utilisé pour détecter les appels ajax avec ces valeurs "X-Requested-With XMLHttpRequest")
  • La plupart des navigateurs Google Play Store utilisent des Webviews pour afficher des pages Web. Même s'il s'agit de navigateurs complets, ils continueront d'envoyer cet en-tête. Donc, si votre intention est de désactiver cette fonctionnalité, vous voudrez peut-être faire attention, car vous désactivez peut-être les navigateurs par défaut de People.
7
jtymann

Pour des informations plus récentes, consultez ici https://developer.chrome.com/multidevice/user-agent Les périphériques lolipop et les nouveaux modèles incluent wv) dans UserAgent.

1
Paul Gregoire

oui et vous pouvez optimiser votre site web en ajoutant ces balises méta 

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="HandheldFriendly" content="True" />

vous pouvez trouver plus d'informations ici http://learnthemobileweb.com/2009/07/mobile-meta-tags/

0
vin_mobilecem