加载桌面版 WKWebView iOS 9

Load desktop version WKWebView iOS 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)

这将强制使用桌面版网站。但是它刚刚停止工作。不确定确切时间,但最近。

知道为什么吗?

还有 google 结果表明有一些用处

"User-Agent"

对于 HTTPHeaderField 和其他

"User_Agent"

两者有什么区别?

更新: 我通过将用户代理字符串更改为

解决了这个问题

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36"

我从

那里得到的

http://www.useragentstring.com

所以我的新问题是这些用户代理字符串多久更改一次,有没有办法让我的应用程序自动更新到最新版本?

解决此问题的一种方法是设置 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];

帮助任何在这里找到答案的人。 解决方案是

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

Swift 4:

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
      super.viewDidLoad()
      self.webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/601.6.17 (KHTML, like Gecko) Version/9.1.1 Safari/601.6.17"
}