iOS 12 WKWebview set customUserAgent не работает?
Кажется, есть ошибка в iOS 12 при установке wkwebview customUserAgent. В webView:didFinishNavigation: метод я печатаю customUserAgent и сравниваю с результатом webivew.evaluateJavaScript. Это другое.
NSLog(@"user-agent is %@"); //Get a custom user-agent
[self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
NSLog(@"user-agent is %@", result); //Get a default user-agent
}];
Доза кто-нибудь видит такую же проблему?
3 ответа
Наконец, я обнаружил, что проблема в том, что вы не можете изменить customUserAgent после вызова его valuJavaScript: metthod в iOS 12. Вот мой код
self..webView.evaluateJavaScript("navigator.userAgent") { [weak self] (result, error) in
self?.webView.customUserAgent = result as? String + "customAgent" //not work
}
}
Вы можете инициализировать UIWebview или другой WKWebiview, чтобы получить текущий пользовательский агент и добавить свой пользовательский пользовательский агент после него.
self.tempWebView.evaluateJavaScript("navigator.userAgent") { [weak self] (result, error) in
if self == nil || error != nil {
return
}
if let userAgent = result as? String {
self?.webView.customUserAgent = userAgent + "custom agent"
}
}
I OS 12, если вы позвоните так, чтобы изменить свой UA, это не сработает
[self.wkWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(NSString* _Nullable oldUA, NSError * _Nullable error) {
// modify ua
self.wkWebView.customUserAgent = @"you custom ua";
}];
Как только вы позвоните navigator.userAgent
, вы никогда не сможете его изменить. Итак, вам нужен fakeWKWebView, чтобы получить UA по умолчанию и настроить для вас действительно WKWebView
self.fakeWKWebView = [[WKWebView alloc] init];
[self.fakeWKWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(NSString* _Nullable oldUA, NSError * _Nullable error) {
self.fakeWKWebView = nil;
// modify ua
self.wkWebView.customUserAgent = @"you custom ua";
}];
Выше предложенный ответ, кажется, не работает для меня.
Настройка пользовательского агента пользователя с помощью приведенного ниже кода работает на симуляторе, но не на реальном устройстве, оба работают под управлением iOS 12.0 Beta.
webView.customUserAgent = [NSString stringWithFormat:@"%@ %@", userAgent, @"custom agent"];
Добавьте это в AppDelegate
UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])