2016-09-14 4 views
5

Я пытаюсь добавить мобильные, настольные версии сайта на моем приложении. Но проблема в том, что 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")! 
    } 

ответ

4

Я рекомендую вам использовать WkWebView вместо UIWebView как это сравнительно более мощный

WkWebView ИО 9 имеет прямое API

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

Благодаря @Durai Amuthan. Я знаю об этом, но по некоторым причинам мне нужно использовать 'UIWebView'. Есть ли способ достичь этого? Я видел одно приложение для iOS, которое дает нам такую ​​же функциональность и в iOS 7. – ZAFAR007

+0

В основном мне нужно получать и сохранять файлы cookie из webView, я могу легко получать файлы cookie из 'UIWebView', но слишком сложно, если я использую' WkWebView', например в соответствии с [Stefan Arentz] (http://stackoverflow.com/questions/33156567/getting-all-cookies-from-wkwebview). Вот почему я использую 'UIWebView' – ZAFAR007

+0

Я не думаю, что он сложный в WkWebView. На самом деле WkWebView обеспечивает легкий интерфейс для использования WebKit. Кривая обучения крутая, вот и все. –