【问题标题】:User Agent change at run time运行时用户代理更改
【发布时间】:2017-01-22 13:17:40
【问题描述】:

我正在尝试在我的应用中添加移动、桌面版网站功能。但问题是User Agent 只会在 webView 加载之前立即更改。在我的应用程序中,我为Mobile 添加按钮一个,为Desktop 版本站点添加第二个按钮。 UIWebView 选择 User Agent 刚开始。谁能告诉我有没有办法在运行时更改 User Agent。谢谢

 var defaultUserAgent = String()
    @IBOutlet weak var webView: UIWebView!

    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = NSURL(string: "https://www.youtube.com")
        let request = NSURLRequest(URL: url!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)
    }

    @IBAction func mobile(sender: AnyObject) {
        NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": defaultUserAgent])
        print(defaultUserAgent)

        let url = NSURL(string: "https://www.youtube.com")
        let request = NSURLRequest(URL: url!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)

    }

    @IBAction func desktop(sender: AnyObject) {

        NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"])

        let url = NSURL(string: "https://www.youtube.com")
        let request = NSURLRequest(URL: url!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)

    }

    func webViewDidFinishLoad(webView: UIWebView) {
        activityIndicator.stopAnimating()
        print(webView.stringByEvaluatingJavaScriptFromString("navigator.userAgent"))
        defaultUserAgent = webView.stringByEvaluatingJavaScriptFromString("navigator.userAgent")!
    }

【问题讨论】:

    标签: swift uiwebview swift2


    【解决方案1】:

    我建议你使用 WkWebView 而不是 UIWebView,因为它相对更强大l

    iOS 9 的 WkWebView 有直接的 API

     if #available(iOS 9, *) {
                webViewObj.customUserAgent = "customUserAgentValue"
     }
    

    【讨论】:

    • 感谢@Durai Amuthan.H 我知道这一点,但由于某些原因我需要使用UIWebView。有什么办法可以做到这一点?我在 iOS 7 中看到过一款 iOS 应用,它也为我们提供了相同的功能。
    • 基本上我需要从 webView 获取和保存 cookie,我可以很容易地从 UIWebView 获取 cookie,但是如果我使用 WkWebView 就太复杂了,就像根据 Stefan Arentz 一样。这就是我使用UIWebView 的原因
    • 我认为 WkWebView 并不复杂。事实上,WkWebView 提供了简单的界面来利用 WebKit。学习曲线很陡峭。
    • 我不知道link 是否相关但想分享
    猜你喜欢
    • 2014-02-24
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多