2010-01-27 5 views

답변

31

UIWebView에서 작성한 웹 요청에는 사용자 에이전트 문자열에 "Safari"라는 단어가 포함되지 않습니다. 모바일 사파리로 만든 웹 요청. 이것은 앱 또는 모바일 사파리에서 요청이 왔음을 확인한 가장 좋은 방법입니다. 앱 내에있는 UIWebView에서

샘플 사용자 에이전트 : 모바일 사파리에서

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: 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

Android의 webview에서 "X-Requested-With"라는 http 헤더를 보냅니다. 독립형 브라우저는 그렇지 않습니다. iPhone의 UIWebView에서도이 작업을 수행합니까? http://stackoverflow.com/a/15254092/90236 –

+0

을 참조하십시오. 불행히도이 답변은 Chrome iOS에서 실패합니다. 이것들은 Safari와 Chrome의 UA입니다. 둘 다 "사파리"를 포함합니다 --- 'Mozilla/5.0 (Mac OS X과 같은 iPhone 및 CPU iPhone OS 7_1_1) AppleWebKit/537.51.2 (Gecko와 같은 KHTML) 버전/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (Mac OS X과 같은 iPhone 및 CPU iPhone OS 7_1_1) AppleWebKit/537.51.1 (Gecko와 같은 KHTML) CriOS/35.0.1916.38 모바일/11D201 Safari/9537.53' –

+1

@ bfred.it 당신의 코멘트를 이해하십시오. 문제는 서로 다른 모바일 브라우저를 구별하는 것과 아무런 관련이 없습니다. 내장 된 브라우저에서 내장 된 UIWebView를 구분하기 만하면됩니다. – Johann

11

독립형 모바일 사파리 사용자 에이전트 문자열은 단어 '버전'을 포함하고있는 UIWebView 사용자 에이전트 반면, 문자열은 그렇지 않습니다. 따라서 탐지 스크립트는 다음과 같이 최신 버전의 iOS에서 작동하도록 수정 될 수 있습니다.

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

이것에 대한 정규 표현식을 작성해 주셔서 감사합니다! – aendrew

+0

'var is_uiwebview =/(iPhone | iPod | iPad). * AppleWebKit (?!. * Version) |; wv) /i.test (navigator.userAgent);'또한 안드로이드 웹 뷰를 감지합니다. – buggedcom

관련 문제