【通常做法】

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}];}
}

iOS设置自定义UA [NSUserDefaults standardUserDefaults] registerDefaults:@{ @UserAgent:相关推荐

  1. iOS 设置自定义间距的文字下划线

    网上看到很多用NSAttributedString的NSUnderlineStyleAttributeName来设置的,方法很简便,网上也很多,就不发了. 效果如下: 下划线和文字没有间隔,贴在一起的 ...

  2. iOS设置UIWebView的UserAgent

    接入第三方时,别人又需求,要求传入我们的信息. // 获取 iOS 默认的 UserAgent,可以很巧妙地创建一个空的UIWebView来获取:NSString *userAgent = [[[UI ...

  3. iOS 设置字体 自定义字体

    iOS 设置字体 自定义字体 分类: iOS2012-12-21 16:33 1062人阅读 评论(0) 收藏 举报 1.网上搜索字体文件(后缀名为.ttf,或.odf) 2.把字体库导入到工程的re ...

  4. scrapy 设置随机UA

    爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单. 1.常规设置 UA 首先,说一下常规情况不使 ...

  5. java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...

    本实例是为了实现在管理后台实现微信菜单的添加删除管理. 1.首先我们需要新建一个数据库表用于存放menu菜单项 可包含的字段有id.父类id.name.排序.是否显示.类型(view.click).链 ...

  6. Qt for ios 设置程序图标(logo)和启动页(splash)

    前言 Qt开发ios程序,要面临的一个问题就是设置程序图标和启动页的问题,作为一个跨平台开发者,对原生开发本身就不太熟悉,即便是这种小功能也可能会成为阻碍,没办法, 只能硬着头皮上咯. 要设置ios的 ...

  7. android极光推送声音,【极光推送】iOS APNS 自定义铃声

    IOS APNS自定义推送铃声 是推送给苹果服务器时 将 推送的 key = sound 的value = @"custom.xxx".自定义铃声支持几种固定的格式.本人只以.ca ...

  8. ios 系统状态栏样式修改_超简单!!! iOS设置状态栏、导航栏按钮、标题、颜色、透明度,偏移等...

    原标题:超简单!!! iOS设置状态栏.导航栏按钮.标题.颜色.透明度,偏移等 1. 要实现以下这些效果都非常简单 2. 废话不多说,先看看实现效果 3. 下面告诉你我为什么说实现这些效果非常简单 比 ...

  9. iOS 设置View阴影

    iOS 设置View投影 需要设置 颜色 阴影半径 等元素 UIView *shadowView = [[UIView alloc] init];shadowView.frame = CGRectMa ...

最新文章

  1. Docker核心技术之Docker Compose
  2. #pragma pack 内存对齐
  3. redis源码笔记-endian
  4. JVM内存状况查看方法和分析工具
  5. .pyc文件_python专题shutil高阶文件操作
  6. 50、Power Query-Text.Contains的学习
  7. C#之基本知识和语法3 - 数据类型
  8. 整理blog,回味过去的点滴
  9. MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?...
  10. 020303阶段三 I/O复用 select和epoll的文件描述符管理
  11. Druid配置文件demo
  12. 钉钉微应用接入钉钉免登陆配置记录。NET实现
  13. python处理金融数据_python-金融数据处理demo
  14. Hive——元数据表含义
  15. 免费课程:Java高级教程-项目部分视频——私塾在线提供
  16. 华为手机的封神之路,小米OV谁能复刻?
  17. 斗地主 -(一) 如何开发斗地主
  18. FatalThrowableError in Encrypter.php line 66: Call to undefined function openssl_encrypt()
  19. Ubuntu 下安装新世纪五笔输入法
  20. 小蚁服务器维修期限,小蚁监控云服务器

热门文章

  1. 使用ip2region来完成城市定位(java)
  2. webview加载百度失败_积攒13年的内容一夜消失,百度贴吧怎么了?
  3. 基于SSM个人财务收入支出统计管理系统
  4. 电荷负载分解(NILM)评价指标代码详解
  5. Linux lvm分区扩容、给sda2扩容
  6. 2022年二级建造师施工进度计划的类型及其作用测试卷及答案
  7. 帝国时代3启动报错问题处理
  8. 【MDCC 2016】物联网开发专场:物联网落地实践探索
  9. FLEX MAINTENACE
  10. Axure的布尔运算/发布与设置