【问题标题】:Detect mobile devices - and tablet devices检测移动设备和平板设备
【发布时间】:2012-04-02 19:52:42
【问题描述】:

我目前正在研究一些用于 PHP 检测手机的代码,这可能很容易。

现在我遇到了一个问题——我想在我的 MVC 框架中为平板电脑、手机和网页制作独特的视图文件。所以我需要将平板电脑与其他移动设备分开。

目前这是我正在使用的代码:

public function isMobile()
{   
    if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT']))
    return true;
else
    return false;
}

但这还不够 - 唯一的检查是设备是否是移动设备 - 如果不是,则按照标准告诉框架,我们在计算机上。最后一部分没问题 - 但我想将移动设备分为实际移动设备中的移动设备 - 以及第二组,应该是平板电脑。

我希望,我已经明确表达了我的愿望,并且我希望你能以一种好的方式来实现这一目标。

提前致谢。

【问题讨论】:

  • 所以您的正则表达式不正确,或者您想将此正则表达式拆分为多个(用于移动设备和平板电脑)?
  • > 这是一个类,其中包含单独检测每个平台的方法。 > > code.google.com/p/php-mobile-detect 仅适用于平板电脑上的歌剧。平板电脑上的内置 android 浏览器返回其手机。

标签: php mobile device-detection


【解决方案1】:

这是一个包含单独检测每个平台的方法的类。

【讨论】:

  • 这实际上会回答这个问题 - 如果您确保在 isMobile-check 之前进行 isTablet-check.. 因为平板电脑也被标记为“手机” - 出于逻辑原因.. :)谢谢你,乔!
  • 今天早些时候才发现!我打算准确地回答这个问题,这个答案是如何回答的! +1
  • ASP.NET 有类似的东西吗?
  • @greenPerson 看起来this 将为您提供与 ASP.Net 类似的功能。
  • 由hello 发布为答案: 这仅适用于平板电脑上的歌剧。平板电脑上的内置 android 浏览器返回其手机。
【解决方案2】:

老问题,但这是我对移动检测的看法。

您在问题中声明您想要移动设备的唯一文件,所以我可以假设这样做的原因是为移动客户端和桌面客户端提供不同版本的网站。

这种方法在一定程度上是可以的。这一点被称为Android。每天都有~1.5 million 的Android 设备被激活,分辨率从320*240 到2560*1600,这使得if {} else 很难为每个设备提供if {} else。即使您尝试列出最常用的设备并尝试仅针对这些设备,将来也很难支持新设备。

我不久前的方法是忘记将设备分为“移动”和“桌面”类别的旧方法,并创建一种新方法。该方法存在于基于浏览器功能的“好”和“坏”浏览器中。例如,如果浏览器支持本地存储,它将属于“好”类别。

从这个开始,我有可能创建网站的“基础”版本,从 UI 的角度来看非常基本,但可以跨浏览器工作。该网站的基本版本将在所有设备上呈现相同的内容(因为这在一天结束时很重要),尺寸将非常小(资源更少,html 更小 em>) 并且基于浏览器的功能会在客户端得到丰富。

所以最终你会得到一个占用空间非常小的网站(html 大小和资产),看起来不错的跨浏览器,并且它将支持出现在市场没有任何变化,即使在连接不佳的情况下也能快速加载,并且可以根据浏览器功能在客户端丰富。

您甚至可以根据设备大小来丰富网页:如果浏览器报告大屏幕,您可以引入更多资产、更多广告,使网页更美观;如果浏览器报告在小屏幕上,则保持原样。

【讨论】:

  • 其实这个答案无论如何都值得一读 - 这是一个很酷的方法,我从来没有想过:)
  • 完全赞成这种方法,这正是我想要实现的,但说起来容易做起来难,至少在服务器端级别!
【解决方案3】:

Mobile_Detect 是一个轻量级的 PHP 类,用于检测移动设备(包括平板电脑)。它使用 User-Agent 字符串结合特定的 HTTP 标头来检测移动环境。 - 阅读更多 http://mobiledetect.net

【讨论】:

  • 谢谢,很有用。
【解决方案4】:

您还可以使用更全面的解决方案,例如 WURFL Cloud,这是一种检测移动设备功能的服务,例如 is_mobile 和 is_tablet。低流量网站有免费计划:http://www.scientiamobile.com/cloud

【讨论】:

    猜你喜欢
    • 2013-02-02
    • 2014-08-28
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2010-11-20
    • 2021-04-14
    相关资源
    最近更新 更多