Przepraszam, sam bym to przetestował, ale obecnie nie mam mojego mac. Czy żądanie internetowe wykonane w interfejsie użytkownika UIWebView wysyła te same informacje o kliencie użytkownika, które byłyby wysyłane przez żądanie internetowe z mobilnego Safari?Czy usługa UIWebView wysyła tę samą aplikację użytkownika w nagłówkach żądania jako mobilne Safari?
Q
Czy usługa UIWebView wysyła tę samą aplikację użytkownika w nagłówkach żądania jako mobilne Safari?
28
A
Odpowiedz
31
Żądania sieciowe wykonane z UIWebView nie będą zawierać słowa "Safari" w ciągu znaków User Agent. Będą wysyłane żądania internetowe z Mobile Safari. Jest to najlepszy sposób, jaki znalazłem do określenia, czy żądanie pochodzi z aplikacji lub z Mobile Safari. Agencie
Próbka Użytkownik od UIWebView ciągu App:
User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile
Próbka User Agent z Mobile Safari:
User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari
11
Samodzielne Mobile Safari ciągi agenta użytkownika zawierają słowo 'Version', podczas gdy UIWebView agenta użytkownika łańcuchy nie. Tak więc skrypt wykrywania można zmodyfikować tak, aby działał z najnowszą wersją systemu iOS:
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);
Podgląd strony internetowej na Androida wysyła nagłówek http "X-Requested-With". Samodzielna przeglądarka tego nie robi. Czy iPhone UIWebView też to robi? zobacz http://stackoverflow.com/a/15254092/90236 –
Niestety ta odpowiedź kończy się niepowodzeniem w przypadku Chrome iOs. Są to UA dla Safari i Chrome. Obie zawierają "Safari" --- 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 jak Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (iPhone, CPU iPhone OS 7_1_1 jak Mac OS X) AppleWebKit/537.51.1 (KHTML, jak Gecko) CriOS/35.0.1916.38 Mobile/11D201 Safari/9537.53' –
@ bfred.it Nie mam zrozumieć swój komentarz. Pytanie to nie miało nic wspólnego z odróżnianiem różnych przeglądarek mobilnych od siebie nawzajem. Tylko odróżnianie wbudowanego interfejsu UIWebView od wbudowanej przeglądarki. – Johann