1

设置 wkwebview customUserAgent 时,iOS 12 中似乎存在错误。在 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
}];

有人看到同样的问题吗?

4

5 回答 5

10

最后,我发现问题是在 iOS 12 中调用其 evaluateJavaScript: 方法后无法更改 customUserAgent。这是我的代码

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"
        }
    }
于 2018-07-17T02:25:31.470 回答
1

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

}];
于 2019-11-14T10:18:25.007 回答
0

上面建议的答案似乎对我不起作用。

使用以下代码设置自定义用户代理适用于模拟器,但不适用于运行 iOS 12.0 Beta 的实际设备。

webView.customUserAgent = [NSString stringWithFormat:@"%@ %@", userAgent, @"custom agent"];

于 2018-07-25T01:27:20.113 回答
0

我发现了同样的问题,这是屏幕截图。WKWebView 似乎是一个 iOS 12 问题。

在此处输入图像描述

于 2018-12-17T16:33:18.230 回答
-4

将此添加到 AppDelegate

UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])
于 2018-10-03T13:11:21.247 回答