2015-10-30 88 views
1

直到最近加載桌面版本的iOS WKWebView 9

let url = NSURL (string:http://asite.com)   
let request = NSMutableURLRequest(URL: url!)   

//iOS loads the mobile version of asite.com which does not have the required DOM so we force the desktop version by setting new value forHTTPHeadrField 
let newUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11" 

request.setValue(newUserAgent, forHTTPHeaderField: "User_Agent") 

let config = WKWebViewConfiguration()   

//even though we dont need to see it the webpage needs to appear but we set its frame to CGRectZero so its hidden from user 

let ghostWebView : WKWebView = WKWebView(frame:CGRectZero, configuration: config)   
ghostWebView.loadRequest(request) 

這將迫使該網站的桌面版本。但它剛剛停止工作。不確定何時但最近。

任何想法爲什麼?

而且谷歌搜索結果顯示部分採用

「的User-Agent」

的HTTPHeaderField和其他

「User_Agent類」

什麼區別兩者之間?

更新: 我通過改變用戶代理字符串

「的Mozilla/5.0解決了這個問題(蘋果,英特爾的Mac OS X 10_10_1)爲AppleWebKit/537.36 (KHTML,例如Gecko)瀏覽器/ 41.0 .2227.1的Safari/537.36"

這是我從

http://www.useragentstring.com

得了

所以我的新問題是,這些用戶代理字符串的更改頻率有多少,我的應用程序是否可以自動更新到最新的?

回答

0

幫助任何在這裏找到答案的人。 的解決方案是

UserDefaults.standard.register(defaults: ["UserAgent" : "Chrome Safari"]) 
1

解決此問題的一種方法是通過設置WKWebViewConfiguration的applicationNameForUserAgent屬性。

默認值爲「Mobile/13C75」,但您可以使用「Chrome/23.0.1271.6 Safari/537.11」或「Chrome Safari」進行設置,您將獲得所需URL的桌面版本。

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];  
wkWebConfig.applicationNameForUserAgent = @"Chrome Safari";  
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero 
             configuration:wkWebConfig]; 
+0

這仍然加載網站 – RyanTCB

+0

它就像魅力的手機版! – OXXY