2016-09-14 5 views
5

Ich versuche, mobile, Desktop-Version Website-Funktionalität in meiner App hinzuzufügen. Aber das Problem ist, dass User Agent nur sofort vor dem Laden von WebView ändern. In meiner App füge ich Button für Mobile und zweiten für Desktop Version Website hinzu. UIWebView Wählen Sie User Agent nur beim Start.Kann jemand mir sagen, gibt es eine Möglichkeit, User Agent zur Laufzeit zu ändern. DankÄnderung des Benutzeragenten zur Laufzeit

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")! 
    } 

Antwort

4

Ich empfehle Ihnen WkWebView statt UIWebView zu verwenden, da es vergleichsweise mächtiger ist

WkWebView von iOS 9 hat eine direkte API

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

Dank @Durai Amuthan. HI weiß darüber, aber aus irgendwelchen Gründen muss ich 'UIWebView' verwenden. Gibt es einen Weg, dies zu erreichen? Ich habe eine iOS-App gesehen, die uns dieselbe Funktionalität auch in iOS 7 bietet. – ZAFAR007

+0

Grundsätzlich muss ich Cookies von webView holen und speichern, ich kann leicht Cookies von 'UIWebView' bekommen, aber zu kompliziert, wenn ich' WkWebView' verwende nach [Stefan Arentz] (http://stackoverflow.com/questions/33156567/getting-all-cookies-from-wkwebview). Das ist der Grund, warum ich 'UIWebView' verwende – ZAFAR007

+0

Ich denke nicht, dass es in WkWebView kompliziert ist. Tatsächlich bietet WkWebView eine einfache Schnittstelle, um WebKit zu nutzen. Die Lernkurve ist steil, das ist alles. –

Verwandte Themen