Обнаружение iPad 3 в Ruby

Можно ли обнаружить iPad 3 (он же новый iPad) с помощью ruby/rails? Если да, то как мне это сделать?


person Kyle Decot    schedule 18.03.2012    source источник


Ответы (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, проверьте здесь.

person emre nevayeshirazi    schedule 18.03.2012
comment
Вероятно, вы могли бы использовать медиа-запросы, чтобы узнать, что это устройство с сетчаткой, но это только в CSS. - person Andrew Marshall; 18.03.2012

Обычно 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. Это не совсем удовлетворительно, но работает.

person euhe    schedule 13.04.2012
comment
Я думаю, что это не так, потому что alert('размер экрана = ('+screen.width+','+screen.height+') dpr='+window.devicePixelRatio); возвращает (768,1024) dpr=2. Это потому, что экран в точках, а не в пикселях. - person groumpf; 27.09.2012

Вы можете определить, является ли устройство iPad, просмотрев строку пользовательского агента, вы можете определить, имеет ли устройство дисплей сетчатки, проверив, равно ли window.devicePixelRatio 2 (используя клиентский JavaScript). Устройство является iPad3, если iPad указан в строке пользовательского агента, а соотношение пикселей равно 2.

Вы можете передать devicePixelRatio:

  • передача его на сервер в виде файла cookie
  • динамическое добавление его к URL-адресам на вашей странице с помощью JavaScript
  • динамически помещая его в скрытое поле в форме

Возможно, вам придется перенаправить (используя window.location) пользователя обратно на текущую страницу, если файл cookie не установлен.

person BeWarned    schedule 17.04.2012