iOS UIWebView 自定义 UserAgent

来源:互联网 发布:php抢红包高并发 编辑:程序博客网 时间:2024/06/08 11:19

我的需求是:用户使用我的浏览器浏览网页,服务器可以得到我的浏览器名称和版本号,站长工具能查看到客户端来源。OK,解决思路就是修改系统默认的用户代理UserAgent,这是没差的。

曾经做过的App也有这样的需求,思路是在UIWebView 的 Request 的 Header 中设置UserAgent,最后证实这条思路是行不通的,后来由于时间问题,这个功能就放弃了。如今有个App又有这个需求,看到UC浏览器设置中有个UA设置,让我很是羡慕,果然愿意解决问题的人总是幸运的,再网上找到相关文章。了解大概两种思路,第一种是使用私有API,第二种则是iOSSDK内的。第一种这里就放弃不讲了,只能上第二种实现思路。

// 获取 iOS 默认的UserAgent,可以很巧妙地创建一个空的UIWebView来获取:

NSString *userAgent =[[[UIWebView alloc]init]stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

// 获取App名称,我的App有本地化支持,所以是如下的写法

NSString *appName=NSLocalizedStringFromTable(@"CFBundleDisplayName",@"InfoPlist",nil);

// 如果不需要本地化的App名称,可以使用下面这句

// NSString * appName =[[NSBundlemainBundle]infoDictionary][@"CFBundleDisplayName"];

NSString*version =[[NSBundlemainBundle]infoDictionary][@"CFBundleShortVersionString"];

NSString *customUserAgent =[userAgentstringByAppendingFormat:@"%@/%@"appName, version];

[[NSUserDefaultsstandardUserDefaults]registerDefaults:@{@"UserAgent":customUserAgent}];


// ---------- 随便写个测试代码,记得设置delegate哦,这只是测试代码

UIWebView *webView = [[UIWebView alloc]init];

webView.delegate= self;

[webViewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.baidu.com/"]]];

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

NSLog(@"UserAgent = %@", [webViewstringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]);

}

Xcode 5.1.1 iOS 7.1  模拟器下得到的结果是:

Mozilla/5.0 (iPhone; CPU iPhoneOS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko)中华浏览器/1.2.2



0 0
原创粉丝点击