2012-03-18 3 views

답변

5

장치를 감지 할 수는 있지만 장치 버전을 감지 할 수 없다고 생각합니다. 지금까지 내가 아는 한, 애플은 다음과 같이 나타납니다 사용자 에이전트 문자열을 제공

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 

가이 문자열에는 기계 버전 정보가없는 나는 사용자의 컴퓨터를 감지하는 다른 방법을 알고하지 않습니다.

레일스에서 ​​사용자 에이전트 문자열을 얻는 방법을 모르면 here을 확인하십시오.

+3

미디어 쿼리를 사용하여 망막 장치라는 사실을 알 수 있지만 CSS에만 있습니다. –

4

일반적으로 RoR은 브라우저의 뷰포트 크기 또는 브라우저가 실행중인 컴퓨터의 해상도에 대해 알지 못합니다. 그러나 JavaScript를 사용하여이를 읽을 수 있으며 숨겨진 입력으로 서버에 전달할 수 있습니다. (here를 참조하십시오.)

을 잠시 동안 - 그 중요한주의입니다 - 당신의 스크립트를 차지

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

될 아이 패드 3 2048 X 1536의 해상도로 유일한 아이 패드입니다 가로 세로 모드에서 iPad 3의 해상도가 가능합니다.

request.env['HTTP_USER_AGENT'].match(/iPad/i)은 요청하는 기기가 iPad인지 여부를 알려줍니다.

두 가지 모두 시도하면 iPad 3입니다. 완전히 만족스럽지는 않지만 작동합니다.

+0

경고 ('화면 크기 = ('+ screen.width + ','+ screen.height + ') dpr ='+ window.devicePixelRatio); (768,1024) dpr = 2를 반환합니다. 화면이 픽셀이 아닌 점이 있기 때문입니다. – groumpf

1

사용자 에이전트 문자열을보고 기기가 iPad인지 여부를 감지 할 수 있습니다. 클라이언트 측 JavaScript를 사용하여 window.devicePixelRatio가 2인지 여부를 확인하여 기기에 망막 디스플레이가 있는지 여부를 감지 할 수 있습니다.

  • 동적 쿠키로 서버를 통과하는 부가

    • :시오 사용자 에이전트 문자열에 화소 비율 참고하여 devicePixelRatio 전달할 수 2.

      경우, 장치는 iPad3 인 그것은 자바 스크립트

    • 로 페이지에 URL을
    • 동적

    당신은 CURREN에 다시 사용자를 (에서는 window.location 사용) 리디렉션 할 수있는 형태로 숨겨진 필드에 넣어 쿠키가 설정되지 않은 경우 t 페이지.