59

我们开始为企业电子商务 web 应用程序(基于 Java/Servlet)提供移动浏览器支持。当然有很多决定要做,但在我看来,基石是能够可靠地检测移动浏览器,并相应地决定要返回的内容。是否有一种标准方法可以根据 http 请求(快速)做出此决定,并理想地收集有关发出请求的给定浏览器和设备的更多信息(屏幕大小、html 功能等?)。

我也很感谢那些走这条路的人提供的任何补充信息,这些人已经走上了采用现有大型企业 web 应用程序并从开发方面构建移动浏览器支持的道路。

[编辑] 我当然理解请求标头和有关标准用户代理数据库的信息是一个很大的帮助。对于那些谈论“其他”请求标头属性的人,如果您可以包含类似的标准化名称/值资源,那将是一个很大的帮助。

[编辑] 一些用户提出了解决方案,这些解决方案涉及通过网络调用某些将进行检测的 Web 服务。虽然我确信这可行,但它对于企业电子商务网站来说并不是一个好的解决方案,原因有两个:1)速度。对第三方的每个页面请求都通过网络调用会产生巨大的性能影响。2) 依赖/合法。我们会将我们的网站响应时间和关键功能与他们的服务联系起来,出于法律和风险原因,这很糟糕。

4

19 回答 19

42

标准方法不是检查用户代理吗?这是可用于检测移动浏览器的用户代理数据库。

于 2008-09-26T22:07:07.670 回答
20

@David 的回答提到使用 WURFL——这可能是你最好的选择。但是请注意,成功率通常在 60% 左右(根据我和其他人的经验)。随着运营商不断更改 UA 以及现有设备配置文件的数量(60,000+ ?),没有万无一失的方法可以获取您想要的所有正确数据。

在严重依赖设备数据库之前,请稍加警告。我会尝试通过允许他们更改会话选项来保持用户的选项打开,以防我猜错了。

于 2008-10-04T00:13:27.973 回答
8

您可以使用Modernizer来检测浏览器功能

于 2010-09-03T00:13:22.703 回答
6

虽然您可以通过它的用户代理检测移动浏览器,但 PC 平台上的浏览器大战表明,嗅探用户代理并不是一件好事。

理想情况下,应该根据媒体类型应用特定样式,或者应该根据用户代理以外的标头发送不同的答案 - 例如接受标头,它告诉浏览器喜欢哪种内容.

现在,通过浏览器嗅探编写一个与 iPhone 和 Opera 兼容的网站可能就足够了——但谷歌的 Android 即将到来,在不久的将来,还有许多其他手机将拥有接近 iPhone 的浏览器功能从头开始开发一个不支持这些设备的移动网站将是一种浪费。

于 2008-09-26T22:17:21.327 回答
6

经过几天寻找检测移动设备的正确方法后,我决定保持简单[愚蠢],我将在我的索引页面上放置一个“移动设备站点”按钮......只需单击一下!

于 2010-08-25T11:56:40.473 回答
4

这篇文章(及其后续文章)看起来不错。

于 2008-09-26T22:11:22.323 回答
4

检测移动浏览器- 各种编程语言的片段。

于 2012-05-31T09:13:57.460 回答
3

以下轻量级 Apache 配置做得很好,如果他们更喜欢 PC 版本,它会记住用户的偏好

<VirtualHost (your-address-binding)>   

  (your-virtual-host-configuration)       

  RewriteEngine On     
  RewriteCond %{QUERY_STRING} !ui=pc
  RewriteCond %{HTTP_COOKIE} !ui=pc
  RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

  RewriteRule /(.*) http://bemoko.com/$1 [L]

  RewriteCond %{QUERY_STRING} "ui=pc"
  RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
  RewriteCond %{QUERY_STRING} "ui=default"
  RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>

更多背景信息@http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

于 2011-11-02T23:33:55.360 回答
2

我提出了一个基于 uaprof 和用户代理的免费检测系统: http ://www.mobilemultimedia.be UAprof 应该是可用时检测的主键,因为同一个 uaprof 通常有多个用户代理。如果您想自己管理,那么您应该选择 Wurfl,因为您可以下载整个数据库并在本地自行管理。

于 2009-06-30T11:33:38.883 回答
2

当我最近有类似的需求时,我发现这段代码使用HTTP_X_WAP_PROFILEHTTP_ACCEPTHTTP_USER_AGENT来识别浏览器是移动浏览器还是非移动浏览器。它是 PHP,但可以很容易地转换为您需要的任何内容(我在 VBScript 中为经典 ASP 实现了它)。

具有讽刺意味的是,我最终没有使用该代码,因为我们决定为移动和非移动用户提供特定的 URL,但在我测试它时它确实有效......

于 2009-10-12T15:50:01.717 回答
1

您将从请求标头中获得大部分信息,例如浏览器、设备、接受的语言、接受的格式等。上面提到的用户代理是请求标头的一部分。

于 2008-09-26T22:12:18.170 回答
1

好的,这是一个非常简单的答案——让用户决定怎么样?在您登录到您的应用程序时,提供指向移动网站的链接。在移动站点上,提供“返回主站点”的链接 - 在您的移动设备上尝试 www.fazolis.com - 他们做得很好。

然后,在从浏览器站点到移动站点的链接上,注册他们的“投票”和他们的用户代理。可以建立自己的可靠客户列表,列出需要移动网站的客户。使用这些与这些移动设备的屏幕尺寸规格相结合的方法,您可以构建一些非常好的逻辑以获得令人满意的用户体验。我永远不会在网络资源上发布像这样基本的东西。

哦,在你的“移动网站”上——如果你在语义上写好你的应用程序,那么你应该能够为移动设备和浏览器呈现一个单一的网站,而不必编写两个单独的页面集。只是需要考虑的事情 - 这值得额外的思考和努力以节省以后的时间。

于 2011-05-24T23:18:47.720 回答
1

我在这里看不到它,但我目前正在研究的另一个选项是www.detectmobilebrowser.com

于 2011-10-18T13:48:11.320 回答
1

最简单的方法是创建一个带有与移动浏览器关联的常规标签的数组。至少大多数移动用户代理必须有mobile、mini、nokia、java ME、android、iphone、mobile OS等字样。如果与用户代理匹配,使用php strpos,在页面顶部打印一个移动按钮. 留给用户选择。我喜欢完整的站点,因为我的移动浏览器给了我相同的体验,除了我需要在大多数时候缩放或滚动。

于 2012-02-29T13:57:45.070 回答
0

您必须使用先前定义的列表检查用户代理字符串,例如这个

于 2008-09-26T22:11:12.510 回答
0

您可以使用 web 服务来检测手机浏览,例如 phonedetection.com。

于 2008-11-16T23:57:41.340 回答
0

事实是仅仅依靠用户代理不足以检测移动浏览器。

当然,几年前你可以搜索某些字符串并猜测它是诺基亚或其他什么的,但现在有这么多手机,而且有这么多假装它们不是需要更复杂的东西的东西。

我在链接文本中找到了一个很棒的网站,它基于 MTV 用于所有移动网站的相同解决方案。它非常好,因为它具有独立于设备的标记语言,但更重要的是它们为 isMobileDevice() 提供了 Web 服务调用。

只需查看手册,然后查看“它是如何工作的”。

我一直在为我的客户网站使用它,但还没有找到无法准确检测到的移动浏览器。完全眼瞎!

于 2009-09-15T16:17:39.970 回答
0

刚刚在移动网络上运行了设备和功能检测,其中包含以下内容:

  1. 使用设备和功能检测来改善移动网络上的用户体验
  2. 设备检测简介
  3. 移动网站设计方法
    1. 没做什么
    2. 提供通用的移动网站
    3. 考虑移动和适应性的设计
  4. 内容适配和设备分组策略
    1. 设备分组
    2. 内容改编
  5. 首先将适应需求降至最低
  6. 设备检测的常用方法
    1. 服务器端适配
    2. 客户端适配
    3. 服务器端用户代理 (UA) 和标头查找
    4. 服务端UA字符串结合设备数据库查找
    5. 服务器端用户代理配置文件 (UAProf) 检测
    6. 基于JavaScript技术的检测
    7. CSS 媒体类型
    8. CSS 媒体查询
  7. 其他最佳实践
    1. 重定向+手动链接
    2. 着陆页+手动链接
  8. 可下载的示例页面
于 2010-09-14T22:03:46.150 回答
0

您可以使用 WURFL API 来检测设备类型

http://wurfl.sourceforge.net/wurfl_schema.php

Modernizer来检测浏览器功能

于 2015-01-07T08:15:55.883 回答