我有业务需要能够为嵌入式UIWebView自定义UserAgent.(例如,如果用户使用的是应用程序的一个版本而不是另一个版本,我希望服务器以不同的方式做出响应.)
是否可以在现有的UIWebView控件中自定义UserAgent,例如,对于Windows应用程序中的嵌入式IE浏览器?
如何在iOS 5中更改UIWebView的用户代理?
到目前为止我做了什么: 使用委托回调,拦截NSURLRequest,创建一个新的url请求并将其用户代理设置为我想要的任何内容,然后下载数据并使用"loadData:MIMEType:...重新加载UIWebView" ".
问题: 这会导致无限递归,我加载数据,调用代理返回,实习生调用委托....
这是委托方法:
- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
dispatch_async(kBgQueue, ^{
NSURLResponse *response = nil;
NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[request URL]];
NSDictionary *headers = [NSDictionary dictionaryWithObject:
@"custom_test_agent" forKey:@"User-Agent"];
[newRequest setAllHTTPHeaderFields:headers];
[self setCurrentReqest:newRequest];
NSData *data = [NSURLConnection sendSynchronousRequest:newRequest
returningResponse:&response
error:nil];
dispatch_sync(dispatch_get_main_queue(), ^{
[webView loadData:data
MIMEType:[response MIMEType]
textEncodingName:[response textEncodingName]
baseURL:[request URL]];
});
});
return YES;
}
Run Code Online (Sandbox Code Playgroud) 我有一个iPhone Web App,我有兴趣检测应用程序是否从以下位置加载:
有任何想法吗?
Google Play上有一个应用程序,它将我的网站嵌入到webview中.该应用程序不做任何其他事情,并包括第三方货币化功能.
我想检测用户何时通过应用程序访问我的网站,以便我可以显示一条消息.
然而,我还没有找到区分Android移动浏览器和应用程序的方法,因为用户代理是相同的.
是否有任何已知的方法来检测webview?
谢谢.