区分手机和平板电脑浏览器

7

我知道这个问题已经被深入讨论过了,但我不想在这里提出任何超级复杂的要求。

我们有一个伴侣应用程序与我们的网站配套使用,只适用于7英寸和10英寸平板电脑。我们需要仅向这些设备的用户提供有关我们应用的提示。问题是,我不能按分辨率进行判断。我的 Galaxy S3 手机屏幕分辨率为 1280 x 720,但显然不是平板电脑。而且我也找不到获取屏幕实际尺寸的方法。我想到的唯一解决办法是检测设备是否能使用 MobileCapabilities.CanInitiateVoiceCall 进行电话拨打。不幸的是,我的老板对这个解决方案并不满意。

那么... 我如何在我的 Web 应用程序(服务器端或客户端)中区分手机和平板电脑呢?

更新:目前,对于 Android 来说,似乎最好的方法是来自 Android 团队的博客文章:所有 Android 手机在 UserAgent 字符串中都使用 "Mobile",因此检查 "Mobile" * "Android" 将告诉您它是否是手机,而仅检查 "Android" 应该是平板电脑。对于 iOS 设备也同样简单-检查 "iPhone" vs "iPad" 已经可以了。


1
“我们只需要在那些设备上提醒用户关于我们的应用” - 为什么?如果一个设备有足够的分辨率来显示您的内容,不要将它们排除在外。使您的设计具有响应性,并支持任何设备。 - poke
2
如果你真正想要区分手机和平板电脑,我认为从定义上讲,使手机成为手机的是它是否能够打电话。我不确定你的最终目标是什么,但平板电脑/计算机/手机之间的界限变得非常模糊,而能够打电话是唯一仍然使手机成为手机的事情。 - AaronLS
1
如果一部安卓手机和平板电脑都有足够大的分辨率来运行您的应用程序,那么这两个设备之间有什么不同需要区分吗?你需要根据答案来决定你应该依据什么来做出决定。 - AaronLS
2
@poke:很遗憾,我们没有编写这个应用程序(外包),现有的应用程序仅明确兼容7英寸和10英寸平板电脑。如果不兼容的设备上的用户跟随链接到我们的应用程序,他们将只在Play商店上收到“您的设备不兼容”的消息。因此,基本上这是对糟糕设计的一种解决方法。 - Stephen Collins
1
检查电话呼叫功能可能不是一个完整的解决方案。一些Galaxy 7/10英寸平板电脑具有GSM天线,因此可以进行电话呼叫(尽管我不知道API会报告什么或运营商是否在其OS版本中禁用此功能):http://www.gsmarena.com/samsung_p7100_galaxy_tab_10_1v-3831.php - AaronLS
尝试使用此项目来检测当前浏览器的详细信息:https://github.com/darcyclarke/Detect.js - sdespont
2个回答

1
我知道现在有点晚了,但我也在寻找同样的东西。 Wurfl拥有你想要的。你可以轻松实现它,甚至有一个API可以查询。 对于ASP.NET应用程序,首先必须放置一次性初始化。
public class Global : HttpApplication
{
   public const String WurflDataFilePath = "~/App_Data/wurfl.zip";
   private void Application_Start(Object sender, EventArgs e)
   {
       var wurflDataFile = HttpContext.Current.Server.MapPath(WurflDataFilePath);
       var configurer = new InMemoryConfigurer().MainFile(wurflDataFile);
       var manager = WURFLManagerBuilder.Build(configurer);
       HttpContext.Current.Cache[WurflManagerCacheKey] = manager;
   }
}  

然后像这样使用它。
var device = WURFLManagerBuilder.Instance.GetDeviceForRequest(userAgent);
var isTablet = device.GetCapability("is_tablet");
var isSmartphone = device.GetCapability("is_smartphone");

如需更多信息,请查看ASP.NET实现

希望这可以帮助其他正在寻找此信息的人。


0
你可以尝试进行用户代理检测,并搜索关键词,例如,所有非平板设备在其用户代理中都有“Mobile Safari”关键词。

仅仅“Mobile Safari”并不能起作用,因为无论是手机还是平板电脑(至少对于iOS设备而言)都有这个UserAgent。 - Stephen Collins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接