Загрузить настольную версию WKWebView iOS 9

До недавнего времени

let url = NSURL (string:http://asite.com)        
let request = NSMutableURLRequest(URL: url!)         

//iOS loads the mobile version of asite.com which does not have the required DOM so we force the desktop version by setting new value forHTTPHeadrField
let newUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11"

request.setValue(newUserAgent, forHTTPHeaderField: "User_Agent")

let config = WKWebViewConfiguration()        

//even though we dont need to see it the webpage needs to appear but we set its frame to CGRectZero so its hidden from user 

let ghostWebView : WKWebView = WKWebView(frame:CGRectZero, configuration: config)        
ghostWebView.loadRequest(request)

Это заставит настольную версию сайта. Однако он просто перестал работать. Не уверен, когда именно, но совсем недавно.

Есть идеи, почему?

Также результаты Google показывают некоторую пользу

«Пользователь-агент»

для HTTPHeaderField и других

«Агент_пользователя»

в чем разница между ними?

Обновление: я решил проблему, изменив строку User Agent на

"Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 41.0.2227.1 Safari / 537.36"

Который я получил от

http://www.useragentstring.com

Итак, мой новый вопрос: как часто меняются эти строки пользовательского агента и есть ли способ для моего приложения автоматически обновляться до новейшего?


person RyanTCB    schedule 30.10.2015    source источник
comment
у меня не работает :(   -  person Sheshnath    schedule 27.07.2018


Ответы (3)


Swift 4:

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
      super.viewDidLoad()
      self.webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/601.6.17 (KHTML, like Gecko) Version/9.1.1 Safari/601.6.17"
}
person Ahmed Lotfy    schedule 04.04.2018

Чтобы помочь любому, кто найдет здесь ответ. Решение было

UserDefaults.standard.register(defaults: ["UserAgent" : "Chrome Safari"])
person RyanTCB    schedule 14.09.2016

Один из способов решить эту проблему - установить свойство applicationNameForUserAgent для WKWebViewConfiguration.

Значение по умолчанию - «Mobile / 13C75», но вы можете установить его с помощью «Chrome / 23.0.1271.6 Safari / 537.11» или просто «Chrome Safari», и вы получите настольную версию запрошенного URL.

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];    
wkWebConfig.applicationNameForUserAgent = @"Chrome Safari";    
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero
                                        configuration:wkWebConfig];
person Pablo Romero    schedule 21.12.2015
comment
Это все еще загружает мобильную версию сайта - person RyanTCB; 23.12.2015
comment
да то же самое для меня - person Matt B; 23.06.2021