Можно ли обнаружить iPad 3 (он же новый iPad) с помощью ruby/rails? Если да, то как мне это сделать?
Обнаружение iPad 3 в Ruby
Ответы (3)
Вы можете определить устройство, но я не думаю, что возможно определить версию устройства. Насколько мне известно, 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 — единственный iPad с разрешением 2048 x 1536. Ваш сценарий будет
(
(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). Устройство является iPad3, если iPad указан в строке пользовательского агента, а соотношение пикселей равно 2.
Вы можете передать devicePixelRatio:
- передача его на сервер в виде файла cookie
- динамическое добавление его к URL-адресам на вашей странице с помощью JavaScript
- динамически помещая его в скрытое поле в форме
Возможно, вам придется перенаправить (используя window.location) пользователя обратно на текущую страницу, если файл cookie не установлен.