如何使用 swift 获取用户代理而不使用已弃用的 WebView

Moh*_*ban 3 ios swift

我需要获取用户代理。我曾经使用 UIWebView 获取它,但现在已弃用。

let userAgent = UIWebView().stringByEvaluatingJavaScript(from: "navigator.userAgent")!
Run Code Online (Sandbox Code Playgroud)

Vin*_*lli 8

我们可以使用userAgent下面的代码片段,

import UIKit
import WebKit

class ViewController: UIViewController{
 
    var WKwebView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        getUserAgent()
    }
    
    func getUserAgent() {
        let webConfiguration = WKWebViewConfiguration()
        WKwebView = WKWebView(frame: .zero, configuration: webConfiguration)
        WKwebView.evaluateJavaScript(
            "navigator.userAgent", 
            completionHandler: { (result, error) in
                debugPrint(result as Any)
                debugPrint(error as Any)

                if let unwrappedUserAgent = result as? String {
                    print("userAgent: \(unwrappedUserAgent)")
                } else {
                    print("failed to get the user agent")
                }
            }
        )
    }    
}
Run Code Online (Sandbox Code Playgroud)

输出:userAgent:Mozilla/5.0(iPhone;CPU iPhone OS 13_3,如 Mac OS X)AppleWebKit/605.1.15(KHTML,如 Gecko)Mobile/15E148


小智 7

最好使用这一段代码。

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


Pra*_*lla 6

请改用 WebKit。

import WebKit

let webView = WKWebView()
webView.evaluateJavaScript("navigator.userAgent") { (result, error) in
    print(result as! String)
}

// Output 
Mozilla/5.0 (iPad; CPU OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
Run Code Online (Sandbox Code Playgroud)