7

我知道这个问题已经被打死了,但我不想要任何超级复杂的东西。

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

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

更新:到目前为止,Android 团队的博客文章似乎是最好的方法: 所有Android 手机都在 UserAgent 字符串中使用“Mobile”,因此检查“Mobile”*“Android”会告诉你是否它是一部手机,而“Android”应该是一部平板电脑。iOS 设备应该同样简单——到目前为止,检查“iPhone”与“iPad”似乎已经奏效。

4

2 回答 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 实现

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

于 2014-03-10T16:02:48.290 回答
0

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

于 2013-03-20T11:56:01.130 回答