[webview中的iOS 13 iPad用户代理问题

问题描述 投票:1回答:1

我有一段代码已为我的所有Web视图设置了用户代理:

   dispatch_once(&onceToken, ^{
        {
            __block WKWebView *webView = [[WKWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds] configuration:[WKWebViewConfiguration new]];

            [webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
                if(nil != result && [result isKindOfClass:[NSString class]]) {
                    NSString *userAgent = result;
                    if( [userAgent rangeOfString:@"My Special User Agent"].length == 0 )
                    {
                        userAgent = [userAgent stringByAppendingString:@" My Special User Agent"];
                        NSDictionary * dictionary = @{@"UserAgent": userAgent};
                        [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
                    }
                }

                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.125 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    webView = nil;
                });
            }];
        }
    });

但是,当我在iPad Pro(12.9英寸)-13.2.2上进行测试时,发现我得到的用户代理是错误的,并且在大多数情况下不包含我的特殊用户代理。有趣的是,如果我使Web视图足够小(约占屏幕的20%),它就可以工作。[创建Web视图时,我发现了一种解决方法来设置用户代理:

_webView.customUserAgent = [[NSUserDefaults standardUserDefaults] stringForKey:@"UserAgent"];

这是一个安全的解决方案(我会在用户代理中丢失一些重要信息吗?有更好的解决方案吗?

[我有一段代码为我的所有Web视图设置了用户代理:dispatch_once(&onceToken,^ {{__block WKWebView * webView = [[WKWebView alloc] initWithFrame:[[...

ios ipad wkwebview user-agent ios13
1个回答
0
投票
设置-> Safari->请求桌面网站->所有网站。默认情况下启用该选项。
© www.soinside.com 2019 - 2024. All rights reserved.