我有业务需要能够为嵌入式UIWebView自定义UserAgent.(例如,如果用户使用的是应用程序的一个版本而不是另一个版本,我希望服务器以不同的方式做出响应.)
是否可以在现有的UIWebView控件中自定义UserAgent,例如,对于Windows应用程序中的嵌入式IE浏览器?
iOS上是否有办法获取设备的用户代理?我不想硬编码,因为我需要所有设备的用户代理,我需要将用户代理附加到URL.
谢谢.
我需要传递一些额外的信息,UIWebView loadRequest:以便它达到我的实现NSURLProtocol.信息不能绑定,NSURLRequest因为信息也必须保留NSURLRequest mainDocumentURL.所以我用它进行了子类化NSURL和构造NSURLRequest.我已经知道NSURLRequest到达NSURLProtocol startLoading的不是我所提供的实例UIWebView loadRequest,所以我也实现NSURL copyWithZone了,天真地期望URL加载系统将使用它.
现在,NSURLProtocol canInitWithRequest不是人们合理预期的,而是至少4次startLoading.前两次,传入NSURLRequest仍然包含我的自定义NSURL实现.然后叫一个不幸的内部代码CFURLCopyAbsoluteURL询问了absoluteURL我的定制NSURL和下canInitWithRequest(以及随后的startLoading)已经得到了全新的NSURLRequest新鲜NSURL的吧.copyWithZone永远不会被调用,我的子类NSURL丢失了.
在我放弃并实现一个低级且易碎的解决方案并将内容直接附加到URL字符串之前,我想问更高级别的向导,他们是否看到了如何捕获NSURLProtocol雷达上的初始闪烁或如何CFURLCopyAbsoluteURL进入的方法携带我的自定义实例.我试图NSURL absoluteURL通过再次返回我的自定义NSURL类的新实例来破解,但它没有帮助.我已经在NSURLProtocol setProperty功能上看到了一些承诺,但现在看起来很无用.URL加载系统快乐地创建所有内容的新实例,并且NSURLRequest到达时NSURLProtocol似乎与UIWebView仅偶然输入的内容相同.
更新:好的我想保持帖子尽可能短,但即使是第一个回复是要求技术背景,所以我们去:我UIWebView在应用程序中有多个s.这些视图可以同时运行请求,绝对可以运行相同URL的请求.这就像桌面浏览器中的标签.但我需要区分哪个UIWebView是NSURLRequest到达的每个特定的起源NSURLProtocol …