加载桌面版 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"
我从
那里得到的
所以我的新问题是这些用户代理字符串多久更改一次,有没有办法让我的应用程序自动更新到最新版本?
解决此问题的一种方法是设置 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"
}
直到最近
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"
我从
那里得到的所以我的新问题是这些用户代理字符串多久更改一次,有没有办法让我的应用程序自动更新到最新版本?
解决此问题的一种方法是设置 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"
}