UA 的获取
通过 UIWebView 获取
UIWebView().stringByEvaluatingJavaScript(from: "navigator.userAgent")
通过 WKWebView 异步获取
webView.evaluateJavaScript("navigator.userAgent") { (result, error) in
if error != nil {
print("error = \(error)")
} else {
print("result = \(result)")
}
}
网上有说 WKWebView 可能会出现获取不到 UA 的情况,没遇到。
不过由于 WK 执行 JS 方法是异步的,如果 WK 被提前释放会报一下错误,需要注意下。
WKWebView.init().evaluateJavaScript("navigator.userAgent") { (result, error) in
if error != nil {
print("error = \(error)")
} else {
print("result = \(result)")
}
}
<!--报错信息-->
Error Domain=WKErrorDomain Code=3 "The WKWebView was invalidated" UserInfo={NSLocalizedDescription=The WKWebView was invalidated}
UA 设置
全局 UA 设置
UserDefaults.standard.register(defaults: ["UserAgent": "我是新的 UA"])
使用很简单一行代码设置,最好放在application didFinishLaunchingWithOptions
中调用,可配合获取 UA 设置适合自己的新 UA。
简单不,可惜 iOS 12 之后就有问题了!!!!
适用范围
- UIWebView && iOS 9+
- WKWebView && iOS [9, 12)
iOS 12 之后 WKWebView 的 UA 设置
关键代码
/** @abstract The custom user agent string or nil if no custom user agent string has been set.
*/
@available(iOS 9.0, *)
open var customUserAgent: String?
使用
webView.customUserAgent = "自定义 UA"
注意事项
设置 customUserAgent
需要在 loadRequest 和 evaluateJavaScript 之前被赋值。