2012-02-22 103 views
2

我有一个使用自定义协议处理程序打开应用程序的网页。一个链接到iTunes商店应用程序供人们下载Picup应用程序,另一个链接到fileupload://打开Picup应用程序。如何检测网页是否在iPhone的嵌入式浏览器中运行?

当页面加载到另一个应用程序(例如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 

然而,检测在所述用户代理字符串的存在/不存在字的Safari适用于所有版本的iPhone?有没有更安全的方法?

+0

我必须提醒你,这很容易被欺骗,如果用户使用另一个浏览器如海豚或另一个浏览器,你应该给他们启动功能的选项。 – AlfredoVR 2012-02-22 04:07:43

回答

1

显然是的,这是最好的方式。

即使Chrome for iOs在请求中也包含Safari这个词,因此假设来自iOs的没有“Safari”字样的请求来自嵌入的UiWebKit控件,您应该没问题。

0

您可以设置自定义的User-Agent为您的请求......这里有一个例子:

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]; 
+0

我拥有的是一个网页,而不是一个iPhone应用程序。我需要检测用户是否在Mobile Safari或其他应用程序中访问我的网页 – 2012-02-22 04:07:03

+0

没有得到您的问题。抱歉 – Ashraf 2012-02-22 04:09:23

相关问题