2010-01-27 1 views

Répondre

31

Les requêtes Web créées à partir de UIWebView n'incluront pas le mot «Safari» dans la chaîne User Agent. Les demandes Web faites à partir de Mobile Safari seront. C'est la meilleure façon de déterminer si une demande provient d'une application ou de Mobile Safari.

User Agent Echantillon de UIWebView dans les 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 

User Agent Echantillon de Safari Mobile:

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 
+2

La page Web d'Android envoie l'en-tête http «X-Requested-With». Le navigateur autonome ne le fait pas. Est-ce que l'UIWebView de l'iPhone le fait aussi? voir http://stackoverflow.com/a/15254092/90236 –

+0

Malheureusement, cette réponse échoue avec Chrome iOs. Ce sont les UA pour Safari et Chrome. Les deux contiennent "Safari" --- 'Mozilla/5.0 (iPhone, CPU iPhone OS 7_1_1 comme Mac OS X) AppleWebKit/537.51.2 (KHTML, comme Gecko) Version/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (iPhone, CPU iPhone OS 7_1_1 comme Mac OS X) AppleWebKit/537.51.1 (KHTML, comme Gecko) CriOS/35.0.1916.38 Mobile/11D201 Safari/9537.53' –

+1

@ bfred.it Je ne sais pas Comprenez votre commentaire. La question n'avait rien à voir avec la distinction de différents navigateurs mobiles les uns des autres. Seulement en distinguant un UIWebView intégré du navigateur intégré. – Johann

11

chaînes d'agent utilisateur mobile Safari autonomes contiennent le mot 'Version', alors que l'agent utilisateur UIWebView les chaînes ne le font pas. Ainsi, le script de détection peut être modifié pour fonctionner avec la dernière version d'iOS comme suit:

var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent); 
+0

Merci d'avoir écrit une regex pour ça! – aendrew

+0

'var is_uiwebview =/((iPhone | iPod | iPad). * AppleWebKit (?!. * Version) |; wv) /i.test (navigator.userAgent);' détecte également les webviews Android – buggedcom

Questions connexes