WKWebView 用户代理 (swift)

Afa*_*sum 6 ios swift wkwebview

我正在尝试使用 swift 从 WKWebView 获取用户代理,

let webView = WKWebView(frame: .zero) useragentlabel.text = webView.configuration.applicationNameForUserAgent

但它返回Mobile/15E148,它可以是用户代理吗?

谢谢

Sas*_*sho 10

快速、同步的方法,没有闭包,经过Swift 5、iOS 13 和 iOS 14 测试

let UA = WKWebView().value(forKey: "userAgent")
Run Code Online (Sandbox Code Playgroud)

将使 UA 具有(可选值):

Mozilla/5.0(iPhone;CPU iPhone OS 13_5,如 Mac OS X) AppleWebKit/605.1.15(KHTML,如 Gecko) Mobile/15E148

适用于 iPhone XS 模拟器中的 iOS 13.5

  • 请注意,上述解决方案使用未记录的 API,因此它可能随时停止工作。执行JS不太方便,但似乎更可靠。 (4认同)
  • 比使用异步 JS 的其他答案好得多! (2认同)

Cod*_*mer 6

[self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) {

 }];
Run Code Online (Sandbox Code Playgroud)

结果是 userAgent

  • 这里非常重要的事情是,当任何人收到 WKWebView 的“web 视图无效”错误时,可能会发生这样的情况:您在方法内初始化 WKWebView 并在之后评估上面的 javascript 应该得到无效错误,因此解决此问题需要创建一个WKWebview 的全局引用,然后在方法内评估 java 脚本,然后将获得正确的值而不会出现错误。 (4认同)