2019-01-11UIWebView&WKWebView的UA设置

pragma mark - 全局修改UA 一般写到 appdelegate 的 didfinishlaunch 方法中 一次设置 全局生效

-(void)modificationUA{
NSString *currentUserAgent = [NSString stringWithFormat:@"%@/%@",[[TEnvConfig shareInstance] getWebViewUserAgentPreffix],APP_VERSION];
// get original UserAgent string by using temporal UIWebView WKWebView
UIWebView *tmp = [[UIWebView alloc] init];
NSString *originalUA = [tmp stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

// create custom UserAgent string
NSString *customUA = [NSString stringWithFormat:@"%@ %@", originalUA, currentUserAgent];
NSLog(@"newUA:%@",customUA);
// set custom UserAgent as default
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:customUA , @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

}

利用uiwebview
NSString *originalUA = [tmp stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
获取 originalUA 肯定能获取到 ,而且利用NSUserDefaults 可以全局生效 不论是 uiwebview还是wkwebview

利用wkwebview
[self.wkWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id __nullable userAgent, NSError * __nullable error) {
NSLog(@"navigator.userAgent: %@", userAgent);
如果在这里在原来的 UserAgent 基础上 修改的话 UserAgent可能是nil 或者有error 导致无法设置成功
}];

另外
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.applicationNameForUserAgent = @"UserAgent-Name";
也可以修改userAgent 但是只能单次生效 无法全局生效

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 9,023评论 2 12
  • 公司开始让做一个新iOS项目,由于苹果的更新需要每次发版本审核,没法像服务器一样实时更新,技术部就讨论出原生+HT...
    奶茶007阅读 1,810评论 16 9
  • 前言: 目录:一、WKWebView基本介绍二、WKWebView新特性三、WebKit框架概览四、WKWebVi...
    麦穗0615阅读 1,205评论 0 8
  • 一、WKWebView简介 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWeb...
    慌莫染阅读 4,126评论 0 4