区分手机和平板电脑浏览器
Posted
技术标签:
【中文标题】区分手机和平板电脑浏览器【英文标题】:Distinguishing between phone and tablet browsers 【发布时间】:2013-02-03 09:45:14 【问题描述】:我知道这个问题已经被打死了,但我不希望这里有任何超级复杂的东西。
我们的网站有一个配套应用程序,该应用程序仅与 7 英寸和 10 英寸平板电脑兼容。我们只需要提醒那些设备上的用户我们的应用程序。问题是,我不能通过决议去。我的 Galaxy S3 有一个 1280 x 720 的屏幕,但显然不是平板电脑。我也无法找到获得物理屏幕尺寸的方法。我想出的唯一解决方案是检测设备是否可以使用MobileCapabilities.CanInitiateVoiceCall
拨打电话。不幸的是,老板对这个解决方案并不满意。
那么...如何在我的网络应用(服务器端或客户端)中区分手机和平板电脑?
更新:到目前为止,android 团队的博客文章似乎是最好的方法:所有 Android 手机在 UserAgent 中使用“Mobile”字符串,因此检查“Mobile”*和“Android”会告诉您它是否是手机,而“Android”应该是平板电脑。 ios 设备应该同样简单——到目前为止,检查“iPhone”和“iPad”似乎已经奏效了。
【问题讨论】:
“我们只需要提醒那些设备上的用户我们的应用程序” – 为什么?如果设备具有适当的分辨率来显示您的内容,请不要将它们拒之门外。让您的设计具有响应性,并支持任何设备。 如果你真正想要的是区分手机和平板电脑,我认为手机成为手机的定义是它是否可以打电话。我不确定你的最终目标是什么,但平板电脑/电脑/手机之间的界限变得非常模糊,能够打电话是唯一能让手机成为手机的东西。 如果安卓手机和平板电脑都有足够大的分辨率来满足您的应用,那么您需要区分这两种设备有什么不同?答案应该是您使用什么来确定您的决定应该取决于什么。 @poke:不幸的是,我们没有编写应用程序,(外包)并且存在的应用程序仅与 7" 和 10" 平板电脑明确兼容。如果不兼容设备上的用户点击我们应用程序的链接,他们只会在 Play 商店中收到“您的设备不兼容”消息。所以基本上这是一个糟糕设计的解决方法。 那么检查电话呼叫能力可能不是一个强制的解决方案。一些 Galaxy 7/10" 平板电脑有 GSM 天线,因此可以打电话(尽管 IDK API 会报告什么,或者如果运营商在他们的操作系统构建中禁用它):gsmarena.com/samsung_p7100_galaxy_tab_10_1v-3831.php 【参考方案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 implementation
希望这可以帮助其他正在寻找这个的人。
【讨论】:
【参考方案2】:您可以尝试进行用户代理检测并搜索关键字,例如,所有非平板电脑设备的用户代理上都有“Mobile Safari”关键字。
【讨论】:
只是“Mobile Safari”不起作用,因为手机和平板电脑(至少 iOS 设备的 UserAgent 中都有)。以上是关于区分手机和平板电脑浏览器的主要内容,如果未能解决你的问题,请参考以下文章