WKWebView获取和设置UA

如果你喜欢WKWebView,肯定会遇到需要修改WKWebView的UA的问题,其实WKWebView的UA获取和设置方法与UIWebview没有什么差别,但是你经常会遇到执行完js获取UA的回调,发现获取到的response是nil,怎么办,可以用下面的代码解决,具体的原因可以看代码下面的解释。

WKWebView *tempWebView = [[WKWebView alloc] initWithFrame:CGRectZero];

[tempWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https:www.baidu.com"]]];

[tempWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable response, NSError * _Nullable error) {

    NSString *webviewUserAgent = response;

    NSArray *array = [webviewUserAgent componentsSeparatedByString:@"version=1.0"];

    webviewUserAgent = array.firstObject;

    NSDate *date = [NSDate date];

    NSTimeInterval interval = date.timeIntervalSince1970;

    unsigned long long ti = interval*1000;

    NSNumber *timeInterval = [NSNumber numberWithUnsignedLongLong:ti];

    NSString *userAgent = [NSString stringWithFormat:@"%@/%@/%@", webviewUserAgent, @"version=1.0", timeInterval];

    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":userAgent, @"User-Agent":userAgent}];

}];

WKWebView调用evaluateJavaScript方法获取UA或者设置UA时,需在执行loadRequest方法后再调用evaluateJavaScript,否则completionHandler返回值为空。

这样设置完之后,还会有问题,发现第一次访问web页面时,UA还是默认UA,第二次之后才会修改成功,这个问题我也没有解决,最后只能采用UA的获取和设置使用UIWebview的获取和设置方法,这样设置完之后,也会生效,但是这种方法可能会带来其他目前没有发现的问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • WKWebView在实际开发中的使用汇总 最近公司的项目中大量使用了webview加载H5,鉴于WKWebView...
    许何健阅读 628评论 0 0
  • 公司开始让做一个新iOS项目,由于苹果的更新需要每次发版本审核,没法像服务器一样实时更新,技术部就讨论出原生+HT...
    奶茶007阅读 1,815评论 16 9
  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 9,053评论 2 12
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,685评论 8 265
  • WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨...
    Aiana阅读 4,653评论 1 8