zoukankan      html  css  js  c++  java
  • WKWebView和UIWebView 分别设置全局UserAgent

    WKWebView 设置全局UserAgent

    关键是要设置customUserAgent(>=iOS 9.0),否则执行evaluateJavaScript:@"navigator.userAgent"获取不到webView的UA:

    //修改userAgent
    + (void)addToWebViewUserAgent:(NSString *)addAgent
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            WKWebView *webView = [WKWebView new];
            [webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable oldAgent, NSError * _Nullable error) {
                if (![oldAgent isKindOfClass:[NSString class]]) {
                    // 为了避免没有获取到oldAgent,所以设置一个默认的userAgent
                    // Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
                    oldAgent = [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU iPhone OS %@ like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", [[UIDevice currentDevice] model], [[[UIDevice currentDevice] systemVersion] stringByReplacingOccurrencesOfString:@"." withString:@"_"]];
                }
                
                //自定义user-agent
                if (![oldAgent hasSuffix:addAgent]) {
                    NSString *newAgent = [oldAgent stringByAppendingFormat:@" DWD_HSQ/%@",addAgent];
                    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":newAgent}];
                    // 一定要设置customUserAgent,否则执行navigator.userAgent拿不到oldAgent
                    webView.customUserAgent = newAgent;
                }
            }];
        });
    }


    UIWebView 设置全局UserAgent(建议使用WKWebView)

        // 修改全局UserAgent值
        UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
        NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
        NSString *newUserAgent = [userAgent stringByAppendingString:@" xxx"];//自定义需要拼接的字符串
        NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
        [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

    参考:https://www.jianshu.com/p/6d243781f368

  • 相关阅读:
    Java中的数学计算函数汇总
    安卓杂记(三)利用自定义的PolyBezier()函数将一系列散点绘制成光滑曲线(一)
    安卓杂记(二)利用FrameLayout叠加多种view的方法
    安卓问题报告小记(一): Activity not started, its current task has been brought to the front
    安卓杂记(一) 获取时间总结整理
    node api
    javascript 坑
    async
    promise
    js去除数组中的重复项
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/13161957.html
Copyright © 2011-2022 走看看