用Ruby检测iPad 3

是否可以使用ruby / rails检测iPad 3(又称新iPad)? 如果是这样,我该怎么做呢?

您可以检测设备,但我认为无法检测设备版本。 据我所知,Apple提供了一个用户代理字符串,如下所示:

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 

此字符串中没有机器版本信息,我不知道检测用户机器的任何其他方法。

如果您不知道如何在Rails中获取用户代理字符串,请在此处查看 。

通常,RoR对浏览器的视口尺寸或运行浏览器的机器的分辨率一无所知。 但是,您可以使用JavaScript阅读这些内容,并将它们以隐藏的输入方式传递给服务器。 (见这里 。)

目前 – 这是一个重要的警告 – iPad 3是唯一一款分辨率为2048 x 1536的iPad。你的脚本将是

 ( (screen.width == 2048 && screen.height == 1536) || (screen.width == 1536 && screen.height == 2048) ) 

这解释了iPad 3在横向和纵向模式下的可能分辨率。

request.env['HTTP_USER_AGENT'].match(/iPad/i)将告诉您请求设备是否是iPad。

打两个,它是一个iPad 3.这不是完全令人满意,但它的工作原理。

您可以通过查看用户代理字符串来检测设备是否为iPad,您可以通过检查window.devicePixelRatio是否为2(使用客户端JavaScript)来检测设备是否具有视网膜显示。 如果iPad位于用户代理字符串中且像素比率为2,则设备为iPad3。

您可以通过以下方式传递devicePixelRatio:

  • 将其作为cookie传递给服务器
  • 使用JavaScript动态地将其附加到您网页中的url
  • 动态地将它放在表单中的隐藏字段中

如果未设置cookie,您可能必须将用户重定向(使用window.location)回到当前页面。