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"];

Я нашел ту же проблему, вот снимок экрана. Кажется, проблема iOS 12 с WKWebView.

Добавьте это в AppDelegate

UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])
Другие вопросы по тегам