需求
原生APP嵌套H5界面,要区分打开H5是在本地APP还是在手机浏览器,前端伙伴说需要配合修改默认的 UserAgent,以便区分。
在iOS8之前大家一直用的都是UIWebView,但是都知道,在iOS9出了一个WKWebView,对比起来前者UIWebview就具有严重的内存问题,所以以后UIWebView会被慢慢替代。这里主要讲讲WKWebView怎么修改UserAgent。
方法一
此方法版本都兼容,因为uiwebview和wkwebView代理相同,不知道以后会不会出现变化,所以怕以后留坑
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
//防止多个
if (![userAgent containsString:@"yourUserAgent"]) {
NSString *newUserAgent = [userAgent stringByAppendingString:@" yourUserAgent"];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}
方法二
此方法只能在ios9以上修改才能成功
//
[self.homeBannerWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
NSString *oldAgent = result;
if (![oldAgent containsString:@"yourUserAgent"]) {
// // 给User-Agent添加额外的信息
NSString *newAgent = [NSString stringWithFormat:@"%@;%@", oldAgent, @"yourUserAgent"];
// 设置global User-Agent
[[NSUserDefaults standardUserDefaults] synchronize];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newAgent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
[self.homeBannerWebView setCustomUserAgent:newAgent]; //iOS9出来的方法
}
}];
方法三
和前端商量一下,让前端传个参数专门识别iOS,让前端调用原生iOS方法,或者iOS调用前端的方法都可以
网友评论