Android, потребителски агент на webview срещу потребителски агент на браузър

Създавам уебсайта си и искам да знам дали потребителят използва браузър на Android или приложение с уеб изглед.

възможно ли е ??


person a fair player    schedule 04.10.2012    source източник
comment
Потребителски агент на Chrome за Android: developer.chrome.com/multidevice/user-agent   -  person mr.boyfox    schedule 07.04.2014


Отговори (7)


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

С потребителски агент като този:

Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, като Gecko) Версия/4.0 Safari/534.13

тъй като няма „мобилен“ низ, сервирайте на този потребител версията за настолни компютри (или версия, персонализирана за сензорни устройства с Android с голям екран). Потребителският агент ни казва, че идват от устройство с голям екран, таблета XOOM.

От друга страна, този потребителски агент:

Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, като Gecko) Версия/4.0 Mobile Safari/533.1

съдържа „mobile“ и „android“, така че послужете на сърфиращия в мрежата с този Nexus One мобилното изживяване!

ОТ https://stackoverflow.com/a/7327201

изглежда, че User-Agent е същият в webview като в мобилния браузър по подразбиране

person Matthew    schedule 26.11.2012
comment
С android 4.X това не работи. Някой има ли друг начин за откриване на webview или android браузър? - person fermin; 22.01.2014
comment
@fermin можете да редактирате потребителския агент на уеб изгледа с помощта на setUserAgentString (String ua) и да го анализирате в бекенда. - person a fair player; 22.01.2014
comment
Проблемът ми е, че някой зарежда мобилната ми мрежа с webview en android приложение и не мога да направя нищо в webview ... - person fermin; 22.01.2014
comment
@fermin, което най-вероятно е, защото уеб изгледите по подразбиране имат изключен javascript. Вашият проблем може да е свързан с това. Виждал съм уеб сайтове, показващи страница за грешка, ако javascript е изключен, така че предполагам, че можете да използвате този подход - person Radu Simionescu; 28.10.2014

Според документи за разработчици на Chrome: „Ако се опитвате да правите разлика между WebView и Chrome за Android, трябва да потърсите наличието на низа Version/X.X в низа на потребителския агент на WebView."

person Miguel Andres    schedule 10.03.2015
comment
От lollipop и по-горе трябва да проверите за wv в потребителския агент, но това определено е правилният отговор - person soni; 22.04.2019

FYI: Това не може да се направи с потребителски агенти, но може да бъде открито. Уеб изгледите на Android изпращат допълнителна заглавка „X-Requested-With“. Стойността на тази заглавка ще бъде пространството от имена на приложението, което изпълнява уеб изгледа.

Например браузърът Dolphin изпраща: "mobi.mgeek.TunnyBrowser" Моето тестово приложение изпрати: "com.jamestymann.identifyawebview"

Стандартният браузър всъщност изобщо не изпраща този хедър, така че е доста лесно да ги откриете.

Все пак имам две предупреждения:

  • „X-Requested-With“ е стандартен хедър и потенциално може да бъде изпратен от пълноценни уеб страници/браузъри от настолни компютри. (Например това се използва за откриване на ajax повиквания с тези стойности „X-Requested-With XMLHttpRequest“)
  • Повечето браузъри на Google Play Store използват уеб изгледи за показване на уеб страници. Въпреки че това са пълноценни браузъри, те пак ще изпратят този хедър. Така че, ако намерението ви е да деактивирате тази функция, може да внимавате, тъй като може да деактивирате браузърите по подразбиране на хората.
person jtymann    schedule 06.03.2013
comment
Някой знае ли дали браузърите на iPhone, вградени в приложение, правят нещо подобно? - person Michael Levy; 29.04.2013
comment
Това вярно ли е за Gingerbread или по-стари версии на Android? Виждам това поведение на JellyBean, но не го виждам на Gingerbread. - person Michael Levy; 22.05.2013
comment
Това, което видях е, че родният браузър изпраща com.android.browser като X-requested-With заглавка. Но за определени устройства (предимно Samsung, е това, което забелязах досега), тази стойност ИЗОБЩО не се изпраща както за уеб изгледите, така и за основния браузър - person rishabh; 24.11.2013

За повече актуална информация вижте тук https://developer.chrome.com/multidevice/user-agent Lolipop и по-новите устройства включват wv) в UserAgent.

person Paul Gregoire    schedule 25.05.2018

Можете да използвате кода по-долу за проверен уеб изглед или браузър за Android.

public static bool is_mobile_and_webview()
{
     return System.Web.HttpContext.Current.Request.Browser.IsMobileDevice && System.Web.HttpContext.Current.Request.UserAgent.Contains("; wv");
}
person alireza ahmadi    schedule 18.12.2019
comment
Въпреки че този код може да предостави решение на проблема на OP, силно се препоръчва да предоставите допълнителен контекст относно защо и/или как този код отговаря на въпроса. Отговорите само с код обикновено стават безполезни в дългосрочен план, тъй като бъдещите зрители, които изпитват подобни проблеми, не могат да разберат мотивите зад решението - person Arun Vinoth; 18.12.2019

да и можете да оптимизирате уебсайта си, като добавите тези мета тагове

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

можете да намерите повече информация тук http://learnthemobileweb.com/2009/07/mobile-meta-tags/

person vin_mobilecem    schedule 04.10.2012

Използвам тази страна на сървъра, за достъп до информация за клиентския браузър (агент) в PHP

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

тази шаблонна плоча може да бъде интерпретирана - следователно ще познаете агента ...

от страна на клиента - navigator.userAgent

person MikeyKennethR    schedule 04.10.2012
comment
Знам, че .... това, което искам да направя, е да направя разлика между уеб изгледа и браузъра. Благодаря ти. - person a fair player; 04.10.2012
comment
Не намирам разлика между webview и браузъра в android 4.X ... знаете ли друг начин? - person fermin; 22.01.2014