Wenn wir den Wert des User-Agenten vonUIWebView User-Agent ist nicht richtig eingestellt für benutzerdefinierten Wert
Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72
zu
Mozilla/5.0 (iPad; CPU OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B72
dh auf iPhone app, mein app muss eingestellt ändern möchten der User-Agent von iPad.
Mein Code sieht aus wie
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
}
}
In obigem Fall der User-Agent nicht gesetzt und hält den Standardwert
Statt Logik, um die Zeichenfolge zu manipulieren, wie iPad User-Agent zu sehen, wenn ich ändern und hart codierten Wert in viewDidLoad wie
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”])
dann auch wird es nicht aktualisiert eingestellt.
Aber wenn ich hart Code wie
UserDefaults.standard.register(defaults: ["UserAgent": “MyValue”])
dann wird es richtig
Jede Idee gesetzt, was ging hier falsch?
Ja, das ist richtig, es funktionierte. Verstanden, bevor wir die Web-Ansicht initialisiert haben, müssen wir den Benutzer-Agent in Benutzer-Standardeinstellungen setzen. Vielen Dank. Dennoch gibt es noch eine weitere Frage: Da jedes Gerät eine leicht unterschiedliche Zeichenfolge von Benutzeragent hat, musste ich nur die iPhone-Zeichenfolge in iPad-Zeichenfolge ändern, und der Rest ist der gleiche wie der Standardwert im Benutzer-Agent-Wert. – Jay
Sie können die Zeichenfolgen nicht mit einem anderen Gerätewert ändern, indem Sie codieren. Weil Browser ihre Benutzer-Agent-Werte immer aktualisieren. Also müssen Sie die iphone- oder ipad-Werte manuell einstellen. Zum Erkennen des Geräts: https://StackOverflow.com/a/24059373/3116663 – agenc