iOS设置自定义UA [NSUserDefaults standardUserDefaults] registerDefaults:@{ @"UserAgent":
2016-01-28 11:26
666 查看
【通常做法】
APP 内访问web view,通常需要带自定义UA,那么一般可以通过这个办法设置自定义UA
【特殊需求】
有些时候,考虑到兼容性,只对某些webview 实施自定义UA。那么,上面的办法显然不行了。+ (void)initialize在类创建的时候,只执行了一次。也就是所有的webview都带有自定义UA。那么,针对某一个webview实施自定义UA可以这么弄。这几个方法一定要是静态方法,要不然设置UA不生效。
APP 内访问web view,通常需要带自定义UA,那么一般可以通过这个办法设置自定义UA
/* !!!: set UserAgent * 问题: 创建 NSMutableURLRequest 实例、设置 User-Agent,调用 UIWebView 的 loadRequest: 方法后,User-Agent 被系统替换; * @see http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview */ + (void)initialize { if (self == [WebViewController class]) { [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"UserAgent": [self userAgentWithWebView:[UIWebView new]] }]; } }
【特殊需求】
有些时候,考虑到兼容性,只对某些webview 实施自定义UA。那么,上面的办法显然不行了。+ (void)initialize在类创建的时候,只执行了一次。也就是所有的webview都带有自定义UA。那么,针对某一个webview实施自定义UA可以这么弄。这几个方法一定要是静态方法,要不然设置UA不生效。
NSString* defaultUserAgent = nil; /* 获取默认的UA,用于恢复UA */ + (void)initialize { if (self == [WebViewController class]) { defaultUserAgent = [[UIWebView new] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; } } /*在默认UA后追加自定义UA*/ + (void)registeCustomizeWebViewUserAgent { UIDevice *device = [UIDevice currentDevice]; NSString *iOSName = [device systemName]; NSString *iOSVersion = [device systemVersion]; NSString *customizeUserAgent = [NSString stringWithFormat:@"xxxxxMobile/%@ (Platform/%@; %@/%@)", APP_SHORT_VERSION, @"iPad", iOSName, iOSVersion]; NSString *webViewUserAgent = [[UIWebView new] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; customizeUserAgent = [webViewUserAgent stringByAppendingFormat:@" %@", customizeUserAgent]; if (customizeUserAgent) { [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"UserAgent": customizeUserAgent}]; } } - (void)dealloc { /*由于自定义的userAgent无法播放webview的视频,所以。当webview销毁的时候,重置一下userAgent*/ [[self class] recoverDefaultUserAgent]; } +(void) recoverDefaultUserAgent{ if (defaultUserAgent) { [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"UserAgent": defaultUserAgent}]; } }
相关文章推荐
- 3.CocoaPods的原理
- 关于iOS 7的开源项目
- iOS webp支持
- 2.CocoaPods的使用
- [原创]关于IOS证书
- Android中.9切图的使用,以及类似.9切图在ios和html的使用
- 如何使用iOS 9的Core Spotlight框架
- iOS ARC下内存管理使用非自己生成对象的相关问题
- iOS动态部署方案
- iOS中捕获用户的崩溃日志
- iOS自动布局
- iOS之自动调节输入文本框的高度
- iOS下载大文件原理解析一
- iOS开发常用第三方库
- IOS通讯录分区section汉字转拼音截取首字母
- iOS 中代码获取当前版本号
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
- runtime API
- ios手机号正则表达式