WKWebView设置UserAgent

方式一
WKWebView()?.customUserAgent = newStr
方式二
WKWebView()?.setValue(newStr, forKey: "applicationNameForUserAgent")

同步获取设置
guard let tempUrl = URL(string: webViewUrl) else {
return
}
//若url无效会导致wkwebview崩溃
if UIApplication.shared.canOpenURL(tempUrl) == false {
return
}
if var userAgent = value(forKey: "userAgent") as? String {
let newStr = "(userAgent ?? "")CustomApp"
customUserAgent = newStr
}
异步获取设置
private func getUserAgent(_ isNew: Bool = false) -> String {
let tempWeb = WKWebView()
var isEnd = false
var originalUA: String = ""
tempWeb.evaluateJavaScript("navigator.userAgent", completionHandler: {
[weak self] oldAgent, _ in
let oldStr = oldAgent as? String ?? ""
let newStr = "(oldStr ?? "")CustomApp"
originalUA = isNew ? newStr : oldStr
isEnd = true
})
while(!isEnd) {
RunLoop.current.run(mode: .default, before: Date.distantFuture)
}
return originalUA
}
全局设置
evaluateJavaScript("navigator.userAgent", completionHandler: { [weak self] oldAgent, _ in
let oldStr = oldAgent as? String ?? ""
let newStr = "(oldStr)CustomApp"
UserDefaults.standard.register(defaults: ["UserAgent": newStr])
UserDefaults.standard.synchronize()
})

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容