美文网首页
iOS WebView设置UserAgent

iOS WebView设置UserAgent

作者: Wynter_Wang | 来源:发表于2019-03-10 09:17 被阅读0次

    在和前端交互过程中,为了区分是我们APP内加载网页还是其他应用或浏览器加载的网页,我们需要使用在UserAgent后追加字符串来区分。下面介绍全局和局部修改UserAgent。

    设置全局UserAgent

    下面两种方法都可以修改全局UserAgent,因为修改的是系统配置,等于全局公用属性,所以不论使用UIWebView还是WKWebview,修改都是同一个属性。

    方法一:WKWebView配置UserAgent

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        self.webView = [[WKWebView alloc] init];
        [self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
            NSString *userAgent = result;
            NSString *newUserAgent = [userAgent stringByAppendingString:@" Appended Custom User Agent"];
            NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
            [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
        }];
        
        return YES;
    }
    

    注意:WKWebView不能使用局部声明,需要放在类扩展中,否则无效

    方法二:UIWebView配置UserAgent

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        UIWebView *webView = [[UIWebView alloc] init];
        NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
        NSString *newUserAgent = [userAgent stringByAppendingString:@" Appended Custom User Agent"];
        NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
        [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
        
        return YES;
    }
    
    • 方法二放在其他ViewController也是可以使用,webView初始化要放在设置UserAgent后才会生效。
    • 需要注意的是在当前页面销毁后,设置的UserAgen就会失效,如果push或者present后面的页面,UserAgen依然有效。
    • AppDelegate不会销毁以一直有效

    设置局部UserAgent

    UIWebView *tempWebView = [[UIWebView alloc] init];
    NSString *userAgent = [tempWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
    NSString *newUserAgent = [userAgent stringByAppendingString:@" Appended Custom User Agent"];
    self.webView.customUserAgent = newUserAgent;
    // 下面这句了打印userAgent,可以不要
    [self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
        NSLog(@"%@", result);
    }];
    

    总结:

    • WKWebView需要等待回调才能设置UserAgent;
    • UIWebView可以直接返回UserAgent效率更高;

    相关文章

      网友评论

          本文标题:iOS WebView设置UserAgent

          本文链接:https://www.haomeiwen.com/subject/xuslpqtx.html