Hy大家。
我制作了一个使用WKWebView的移动应用。
当我在iPhone中加载某个网站时,它返回移动网站,但当我尝试在iPad中加载某个网站时,它会请求桌面网站,我想制作一个在桌面和移动网站之间切换的按钮。
我在iPad上尝试这个但没有成功:
self.webView.customUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72"
就像你可以看到我试图强迫iPad中的webView使用iPhone userAgent但它不断请求一些桌面网站。
如果你们需要更多我的代码,我很乐意提供。
谢谢!
答案 0 :(得分:0)
您可以尝试将webview子类化为:
class CustomWebView: WKWebView {
override func loadRequest(request: NSURLRequest) -> WKNavigation? {
guard let mutableRequest = request.mutableCopy() as? NSMutableURLRequest else {
return super.loadRequest(request)
}
mutableRequest.setValue("Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72", forHTTPHeaderField: "User-Agent")
return super.loadRequest(mutableRequest)
}
}
正如本回答https://stackoverflow.com/a/37474812/2579725
中提出的那样仅更改第一个用户代理。我在UIWebView中为每个请求覆盖它的原因是:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSMutableURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if ([request isKindOfClass:[NSMutableURLRequest class]])
{
[request setValue:@"Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72" forHTTPHeaderField:@"User-Agent"];
}
return YES;
}
我的研究结果表明,在WKWebView中无法实现这种方式。