如何确定特定类型的移动客户端是否正在访问我的Web应用程序?

时间:2010-11-26 23:38:22

标签: java mobile

我目前的目标是了解iPhone,Android和其他特定设备何时访问我的Java Web应用程序。我不需要知道任何比这更具体的内容。我知道可以从HTTP Request标头获取User-Agent并对其进行字符串搜索。

只要看到“iPhone”或“Android”是否在字符串中就可以了吗?看看user-agent information on wikipedia,对我的需求来说似乎很简单。

我也看过WURFL。但是,它似乎远远超过我的需要。此外,API是GPL,我希望我的许可证不是GPL。谢谢!

3 个答案:

答案 0 :(得分:1)

  

是的,实时处理需要结果。如果它是我支持的移动设备,我想将它们发送到另一个页面。

由于...?一种不同而简单的风格/外观'感觉?请使用CSS media rule

<link rel="stylesheet" href="default.css" media="screen, projection">
<link rel="stylesheet" href="mobile.css" media="handheld">

掌上电脑会为handheld选择一个。然后,您可以提供一个不同的CSS来缩小/重新排列部分或省略某些占用空间的部分,等等。

这里不需要令人讨厌的服务器端用户代理嗅探。

答案 1 :(得分:0)

如果您不想要大量的粒度,那么在用户代理中搜索像iPhoneAndroid这样的简单字符串就可以了。

请记住,用户代理字符串完全是任意的,没有什么能阻止某人将字符串更改为他们想要的任何内容。大多数人不会,特别是在移动设备上,但在使用您生成的统计数据时请记住这一点。

此外,例如根据this,iPad用户代理字符串是

Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us)
AppleWebKit/531.21.10 (KHTML, like Gecko)
Version/4.0.4 Mobile/7B314 Safari/531.21.10

这意味着如果您只是搜索iPhone,那么您将会抓住该存储桶中的所有iPad。

值得考虑的另一种方法(如果您不需要实时结果)只是将日志中的所有访问权限与用户代理字符串一起记录在日志中,并使用日志分析工具来获取数据你需要。

答案 2 :(得分:0)

参见Spring-Mobile项目。您可以使用WurflDeviceResolver来检测几乎所有移动设备