2010-01-27 10 views

risposta

31

Le richieste Web eseguite da UIWebView non includono la parola "Safari" nella stringa User Agent. Le richieste Web fatte da Mobile Safari lo faranno. Questo è il modo migliore che ho trovato per determinare una richiesta provenire da un'app o da Mobile Safari. Agente

Esempio utente da UIWebView all'interno di 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 

Esempio User Agent da 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 
+2

La webview di Android invia l'intestazione http "X-Requested-With". Il browser stand alone no. Anche l'UIWebView di iPhone fa altrettanto? vedi http://stackoverflow.com/a/15254092/90236 –

+0

Purtroppo questa risposta non riesce con Chrome iOs. Questi sono gli UA per Safari e Chrome. Entrambi contengono "Safari" --- 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 come Mac OS X) AppleWebKit/537.51.2 (KHTML, come Gecko) Versione/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 come Mac OS X) AppleWebKit/537.51.1 (KHTML, come Gecko) CriOS/35.0.1916.38 Mobile/11D201 Safari/9537.53' –

+1

@ bfred.it Io non capisci il tuo commento La domanda non ha nulla a che fare con la distinzione tra browser mobili diversi l'uno dall'altro. Solo dalla distinzione di una UIWebView integrata dal browser integrato. – Johann

11

autonomi Safari Mobile stringhe user agent contiene la parola 'Version', mentre user agent UIWebView le stringhe no. Quindi, lo script di rilevamento può essere modificato per funzionare con l'ultima versione di iOS in questo modo:

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

Grazie per aver scritto una regex per questo! – aendrew

+0

'var is_uiwebview =/((iPhone | iPod | iPad). * AppleWebKit (?!. * Versione) |; wv) /i.test (navigator.userAgent);' rileva anche le visualizzazioni Web di Android – buggedcom

Problemi correlati