2011-09-30 133 views
2

我正在嘗試使用基本webview代碼顯示移動網站的WebView的OS X應用程序,問題是我想讓此WebView自動加載任何網站的移動版本。在OS X應用程序中模擬移動Safari瀏覽器

WebFrame *mainFrame = [web1 mainFrame]; 
NSURL *url = [NSURL URLWithString:@"http://www.website.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[mainFrame loadRequest:request]; 

所以我的問題是,是否有什麼我可以添加到上面的代碼,使這個Web視圖識別本身它是爲移動瀏覽器什麼都網站的服務器,從而自動加載移動任何網站的版本?我已經嘗試過在網上爲自己尋找答案,並且沒有找到答案。

非常感謝您的幫助!

回答

3

使用一個NSMutableURLRequest,而不是一個簡單的NSURLRequest,這樣你就可以改變它,使用它的方法setValue:forHTTPHeaderField:向「用戶代理」 HTML報頭字段設置爲MobileSafari的用戶代理。

// You may adapt the UserAgent string depending on what device and Safari version you want to represent 
static NSString* const kMobileSafariUserAgent = @"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setValue:kMobileSafariUserAgent forHTTPHeaderField:@"User-Agent"]; 
[mainFrame loadRequest:request]; 

對於用戶代理字符串使用,這取決於MobileSafari的版本,你想「模仿」(您想使服務器的版本/設備belives你)。

See here對於一些UA字符串可能

+0

爲了跟上時代的「用戶代理」字段,看到這個網站: http://www.webapps-online.com/online-tools/user-agent-strings/dv/operatingsystem51849/ios 例如: Mozilla/5.0(iPhone;像Mac OS X的CPU iPhone OS 7_0)AppleWebKit/537.51.1(KHTML,如Gecko)版本/ 7.0 Mobile/11A465 Safari/9537.53 – nickjwallin

3

更簡單的方法是隻set that in the WebView的。

+0

似乎'setCustomUserAgent'方法不是在iOS上可用 –

+0

@dsokurenko:iOS沒有這個問題關於的公共WebKit框架。它唯一的WebKit公共API是UIKit中的UIWebView類。 –

相關問題