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

时间:2013-02-18 20:58:29

标签: c# javascript asp.net mobile webforms

我知道这个问题被打死了,但我不希望这里有任何超级复杂的事情。

我们的网站配有一个配套应用程序,仅与7英寸和10英寸平板电脑兼容。我们只需要提醒用户注意我们的应用。问题是,我不能通过解决方案。我的Galaxy S3有一个1280 x 720的屏幕,但显然不是平板电脑。我也不能为我的生活找到一种方法来获得屏幕的物理大小。我提出的唯一解决方案是检测设备是否可以使用MobileCapabilities.CanInitiateVoiceCall拨打电话。不幸的是,老板对这个解决方案并不满意。

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

更新到目前为止,似乎Android的最佳方法来自Android团队的博文:所有 Android手机在UserAgent中使用“Mobile”字符串,所以检查“移动”* “Android”会告诉你它是否是手机,而“Android”应该是平板电脑。 iOS设备应该同样简单 - 检查“iPhone”和“iPad”似乎到目前为止一直有效。

2 个答案:

答案 0 :(得分: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

希望这可以帮助其他人寻找这个。

答案 1 :(得分:0)

您可以尝试执行用户代理检测并搜索密钥,例如,所有非平板电脑设备的用户代理上都有“Mobile Safari”关键字。

相关问题