我有一个使用自定义协议处理程序打开应用程序的网页。一个链接到iTunes商店应用程序供人们下载Picup应用程序,另一个链接到fileupload://打开Picup应用程序。
当页面加载到嵌入在另一个应用程序(例如1Step扫描仪条形码扫描仪)中的Safari时,导航到这些自定义协议时,我收到错误消息 - 错误,无法加载网页!请再试一次。
我打算使用JavaScript来检测网页是否在嵌入式浏览器中加载,并显示一条消息,要求用户使用Safari。
一种方法是检测用户代理字符串
嵌入式
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405
Safari浏览器
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3
但是,是否在适用于所有iPhone版本的用户代理字符串中检测到Safari的存在/不存在?有更简单的方法吗?
答案 0 :(得分:1)
显然是的,这是最好的方式。
甚至Chrome for iOs在请求时都包含Safari这个词,所以假设来自没有单词“Safari”的iOs的请求来自嵌入式UiWebKit控件,你应该没问题。
答案 1 :(得分:0)
您可以为您的请求设置自定义用户代理...这是一个示例:
NSString *urlString= @"http://www.google.com";
NSURL *url = [NSURL urlString];
NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:url];
[requestObj setValue:@"myCustomAgent_Mathboy:)/1.0" forHTTPHeaderField:@"User_Agent"];
[webView loadRequest:requestObj];