댓글 목록

mobile-detect.js소개 및 그누보드에서 모바일 장치 인식 과정 이해

페이지 정보

작성자 운영자 작성일 18-10-09 11:41 조회 1,330 댓글 0

동영상 강좌는 유튜브 채널 '웹학교'를 이용하시기 바랍니다.

웹에서 사용자가 접속하는 모바일 장치를 인식하는 방법은 다양하게 제공되고 있습니다.


그중에서 자바스크립트 라이브러리 mobile-detect.js를 소개합니다.


http://hgoebl.github.io/mobile-detect.js/ 


user-agent문자열 패턴을 비교하여 사용자가 접속하는 장치의 모바일 여부를 판단합니다. 또한, 사용자가 사용하는 브라우저와 OS를 비롯한 다른 정보도 얻을 수 있습니다.


적용방법


1. 라이브러리를 다운로드하거나 CDN을 이용하여 웹문서에 추가합니다.

<script src="mobile-detect.js"></script> 또는

<script src="https://cdn.jsdelivr.net/npm/mobile-detect@1.4.3/mobile-detect.min.js"></script>


2. userAgent 문자열을 생성자에 전달합니다.

<script>

var md = new MobileDetect(window.navigator.userAgent);

// ---

// ---

</script>


3. 라이브러리에서 제공하는 다양한 메소드를 이용하여 정보를 감지합니다.

console.log( md.mobile() );          // 'Sony' 

console.log( md.phone() );           // 'Sony' 

console.log( md.tablet() );          // null 

console.log( md.userAgent() );       // 'Safari' 

console.log( md.os() );              // 'AndroidOS' 

console.log( md.is('iPhone') );      // false 

console.log( md.is('bot') );         // false 

console.log( md.version('Webkit') );         // 534.3 

console.log( md.versionStr('Build') );       // '4.1.A.0.562' 

console.log( md.match('playstation|xbox') ); // false


강좌설명 전체 소스

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>모바일 장치 감지하기</title>
    <script src="js/jquery-1.8.3.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mobile-detect@1.4.3/mobile-detect.min.js"></script> 
</head>
<body>
    <h1>모바일 장치 감지하기</h1>
    <div>
        <button id="detect">감지확인</button>
    </div>
      
      <script>
              $('#detect').click(function(){
                var md = new MobileDetect(window.navigator.userAgent);

                console.log( "Mobile: " + md.mobile());
                console.log( "Phone: " + md.phone());
                console.log( "Tablet: " + md.tablet());
                console.log( "OS: " + md.os());
                console.log( "userAgent: " + md.userAgent());
                
              });
      </script>
</body>
</html>




그누보드5/영카트5에서 모바일 장치를 인식하는 과정


1. G5_IS_MOBILE

그누보드/영카트에서 사용자가 모바일로 접속을 하였는지 확인할 때 PHP 상수 G5_IS_MOBILE로 확인합니다.

index.php, tail.php 파일 등 모바일 접속을 확인할 때 이 상수를 사용합니다.


if (G5_IS_MOBILE) {

    // 모바일 파일로 이동....

}


2. 상수선언

G5_IS_MOBILE 상수는 /common.php 파일에서 선언하고 있습니다. 버전에 따라 위치는 조금 다를 수 있지만

560라인 근처에 아래와 같이 선언되어 있습니다.


define('G5_IS_MOBILE', $is_mobile);


이 선언에 보면 $is_mobile 변수가 나오는데 이 변수값은 해당 상수가 선언되는 바로 위 쪽에 나오고 있습니다.

세션값으로 모바일을 받거나 폼으로 받거나 또는 

is_mobile()함수 리턴값이 참일 때 


$is_mobile = true;


이 할당됩니다.


그러면 다시 is_mobile()함수를 찾아야 겠지요?


3. is_mobile()함수

is_mobile()함수는 

/lib/common.lib.php 파일에서 찾을 수 있습니다.


function is_mobile()
{
return preg_match('/'.G5_MOBILE_AGENT.'/i', $_SERVER['HTTP_USER_AGENT']);
}


이 함수는 

G5_MOBILE_AGENT상수와 사용자가 접속해서 얻은 user_agent 문자열값을 정규식을 이용하여 비교하는 것을 볼 수 있습니다.


4. G5_MOBILE_AGENT

거의 종점에 이르렀습니다.

이제 G5_MOBILE_AGENT 상수만 찾으면 그누보드5/영카트5에서 사용자 모바일 장치 인지 방법을 다 확인하게 됩니다.

이 상수는 

/config.php 파일내에서 선언되었습니다.


define('G5_MOBILE_AGENT', 'phone|samsung|lgtel|mobile|[^A]skt|nokia|blackberry|BB10|android|sony');


그누보드5/영카트5는 위에 있는 코드를 통해 사용자 접속시 모바일(휴대폰/테블릿)로 접속했는지 확인합니다.


댓글목록 0

등록된 댓글이 없습니다.