【发布时间】:2017-05-06 17:21:20
【问题描述】:
如果我们想改变用户代理的值
Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72
到
Mozilla/5.0 (iPad; CPU OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72
即在 iPhone 应用上,我的应用需要设置 iPad 的 User-Agent。
我的代码看起来像
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
var userAgent:String = ""
override func viewDidLoad() {
super.viewDidLoad()
userAgent = self.webView.stringByEvaluatingJavaScript(from: "navigator.userAgent")!
let range = userAgent.range(of: "iPhone")
if range != nil {
userAgent = userAgent.replacingCharacters(in: range!, with: "iPad")
userAgent = userAgent.replacingOccurrences(of: "iPhone", with: "")
}
userAgent = userAgent.replacingOccurrences(of: " ", with: " ")
UserDefaults.standard.register(defaults: ["UserAgent": userAgent])
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.webView.loadRequest(URLRequest(url: URL(string: "http://www.google.com")!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let userAgent = request.allHTTPHeaderFields!["User-Agent"]
print("\(userAgent)")
return true
}
}
在上述情况下,用户代理未设置并保持默认值
如果我在 viewDidLoad 中更改并设置硬编码值,而不是像 iPad 的 User-Agent 一样操作字符串的逻辑
UserDefaults.standard.register(defaults: ["UserAgent": “Mozilla/5.0 (iPad; CPU OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72”])
那么它也没有更新。
但如果我像这样硬编码
UserDefaults.standard.register(defaults: ["UserAgent": “MyValue”])
那么就设置好了
任何想法,这里出了什么问题?
【问题讨论】:
标签: ios iphone uiwebview swift3 user-agent