WKWebView设置自定义userAgent

在iOS中,如果需要使用H5页面,前端经常需要使用userAgent来判断调用页面的客户端类型。

如果我们要设置自定义userAgent,可以直接调用webView.customUserAgent = "your customer userAgent"。但是很多时候,前端需要的是原始userAgent拼接自定义内容,这时候就需要先获取webView的原始userAgent。

在iOS中,要获取WKWebview的原始userAgent,可以使用evaluateJavaScript方法来获取。这个方法是异步的,所以在自定义的WKWebview中,url加载完成可能早于获取到userAgent,从而造成加载H5的页面时,前端获取不到自定义的userAgent。所以需要我们在加载url之前,获取并设置WKWebview的userAgent。

1
2
3
4
5
6
7
8
9
10
11
12
13
var webview:WKWebView?// 声明webview变量

//配置自定义userAgent
func configCustomerUserAgent() {
webview = WKWebView(frame:.zero)
webview?.evaluateJavaScript("navigator.userAgent") { (result, error) in
let agent = result != nil ? "\(result!)" : ""
let oldAgent = "\(agent)"
let newAgent = oldAgent + "your customer userAgent"//根据自己的需要配置userAgent样式
UserDefaults.standard.register(defaults: ["UserAgent":newAgent])//更改全局userAgent
}
}