Agent utilisateur Android, webview vs agent utilisateur browser

je suis en train de construire mon site web et je veux savoir si L'utilisateur utilise le navigateur D'Android ou une application avec un webview.

est-il possible ??

17
demandé sur a fair player 2012-10-04 16:17:40

6 réponses

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

Avec un User-Agent comme ceci:

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

puisqu'il n'y a pas de chaîne de caractères" mobile", servez à cet utilisateur la version de bureau (ou une version personnalisée pour les appareils Android à grand écran tactile). Le L'agent utilisateur nous dit qu'ils viennent d'un grand écran, la tablette Xoom.

d'un autre côté, cet utilisateur-Agent:

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

contient "mobile" et "android," donc servir le web surfer sur ce Nexus One l'expérience mobile!

à partir de https://stackoverflow.com/a/7327201

on dirait le User-Agent est le même dans webview en tant que par défaut dans le navigateur mobile

12
répondu Matthew 2017-05-23 10:31:39

selon Chrome dev docs: "si vous essayez de faire la différence entre le WebView et Chrome pour Android, vous devriez rechercher la présence de la Version/X. X string dans la chaîne utilisateur-agent de WebView."

10
répondu Miguel Andres 2015-03-10 23:07:08

FYI: cela ne peut pas être fait avec des agents utilisateurs, mais il peut être détecté. Les vues web d'Android envoient un en-tête supplémentaire "X-Requested-With". La valeur de cet en-tête sera l'Espace nom de l'application qui exécute webview.

par exemple Dolphin browser envoie: "mobi.mgeek.TunnyBrowser" Mon application test a envoyé: "com.jamestymann.identifyawebview"

le navigateur standard n'envoie pas du tout cet en-tête, il est donc assez facile de les détecter.

j'ai deux bémols cependant:

  • "X-Requested-With" est un en-tête standard et pourrait potentiellement être envoyé à partir de pages web/navigateurs complets à partir d'ordinateurs de bureau. (Par exemple, il est utilisé pour détecter les appels ajax avec ces valeurs de "X-requested-with XMLHttpRequest")
  • la plupart des navigateurs google play store utilisent webviews pour afficher les pages web. Même si ce sont des navigateurs complets, ils enverront quand même cet en-tête. Donc, si votre intention est de désactiver cette fonctionnalité vous voudrez peut-être prudent que vous pouvez désactiver les peuples par défaut des navigateurs.
7
répondu jtymann 2013-03-06 17:31:28

pour des informations plus actuelles, regardez ici https://developer.chrome.com/multidevice/user-agent le lolipop et les nouveaux appareils incluent wv) dans L'agence D'utilisation.

1
répondu Paul Gregoire 2018-05-25 19:15:01

oui et vous pouvez optimiser votre site web par l'ajout de ces balises meta

<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
répondu vin_mobilecem 2012-10-04 12:23:37

j'utilise ce serverside, pour accéder aux informations sur le navigateur du client (agent) en PHP

...
$_SERVER['HTTP_USER_AGENT']; // Different browsers ...
...

ce boilerplate peut être interprété - donc vous connaîtrez l'agent ...

côté client - navigator.userAgent

-3
répondu Mike 2012-10-04 12:33:41