글 작성자: 허접프로그래머
최근 학교에서 인턴을 신청할 일이 생겼고, 마침 친구의 스타트업에서 일할 기회가 생겨서 인턴으로 일하는 중이다. 지금 내가 가지고 있는 기술 스택과는 좀 거리가 있지만, 어쨌든 웹이라는 주제로 일을 할 수 있기 때문에 일을 신청을 했었다.
 
그러다 보니 자연스럽게 여러가지 회사에서 원하는 요구사항들을 만들어 낼 기회가 생겨서 블로그에 올려본다
 

왜 이걸 하게 되었는가?

이 스타트업은 앱 자체가 안드로이드와 IOS 두개로 나눠져 있어서 그것을 QR 코드로 만들어내려면 2개가 필요했는데 솔직히 요즘에 그런 QR코드를 사용하는 경우는 드물다.
즉, 한 QR코드에 두개의 마켓을 담을 수 있는 그런 QR코드가 필요했다.
 
출쳐: https://support.apple.com/ko-kr/HT208843
 
문제는 시중에서는 그런 코드 제작을 해주는 사이트들은 애초에 없기도 했거니와 심지어 만들어주는 사이트에서는 스캔량까지 제한을 해가면서, 월 5000원 혹은 월 1.5만원 정도의 금액으로 만들어 내야했었다,
우리가 큰 기업이면 모르겠는데 작은 기업이다보니까 그런 매달 지출되는 금액에 대해서 영 처리가 하기 어려웠었고, 일단 보류를 하는 방향으로 했었다.
 

문제의 해결

우연찮게 다음 지식인에서 우리 회사 대표친구가 아예 페이지를 만들어서 거기에 마켓으로 가는 버튼 링크를 만들라는 이야기가 있어서 거기에서 이번 문제 해결 방식을 찾았다.
 
그걸 보고 나는 한 페이지에서 모든 처리를 다하면 되겠구나라는 생각을 했었고 여기에 각 모바일 OS를 처리하는 방법을 택하는게 좋다고 생각했다.
그래서 페이지를 하나 만들고 거기로 qr코드를 찍으면 -> 기기인식을 시켜서 바로 각 페이지로 옮겨주게 리다이렉션을 주면 된다.
 
그러면 이 "기기 인식"은 어떤식으로 하는게 좋을까?
"기기 인식"은 예상보다 단순하게 찾을 수 있는데 HTTP 프로토콜을 재대로 이해하고 있다면, 예상보다는 쉽게 해결 할 수 있었다. (아아.. 내가 네트워크를 열심히 공부한 보람이 있었다.)7
Request에서 그런 유저의 여러가지 정보를 받아 올 수 있다. 
즉,Http Request header의 user-agent를 통해서 기계 정보를 읽어 판단하면 된다. 
IOS의 경우 user-agent가 Iphone으로 뜨고 안드로이드의 경우 Android라고 떠서 그걸 체킹하면 각 모바일 OS별 마켓을 따로 인식해서 바로 보내줄 수 있다.
 
 
<html>
<head>
  <!-- Global site tag (gtag.js) - Google Analytics -->

</head>
<body>
<?php

$currOS=$_SERVER['HTTP_USER_AGENT'];

if (strpos($currOS, 'OS X') !== false) {
    header('Location: https://apps.apple.com/kr/app/{id}');
}

if (strpos($currOS, 'iPhone') !== false) {
    header('Location: https://apps.apple.com/kr/app/{id}');
}

if (strpos($currOS, 'Android') !== false) {
    header('Location:market://{id}');
}

?>
</body>
</html>
 

굳이 특이한 점이라면, 애플같은 경우는 그냥 웹사이트의 마켓 URL을 그대로 긁어서 복사해도 상관없지만, Android의 경우는 웹에서 찾은 URL을 그대로 복사해서 붙혀넣는 경우에는 웹사이트로 열립니다. Android의경우는 아예 market:// 이라는 태그가 따로 필요하다. 

비록 이건 php에 비롯한 코드지만, 다른 언어에서도 정말 단순하고 쉽게 짤 수 있다. 
 

마지막 정리 및 소감

예상보다 솔루션비용에 비해서 쉽게 문제를 해결 할 수 있어서 좋았다. 특히나 더 좋았던 것은 이게 리다이렉션을 해주는 페이지이다보니, 만약에 이 QR코드를 사용인원들이 한 페이지에 무조건 방문을 하고 마켓으로 이동하기때문에 유저풀이동의 판단도 상당히 수월해보였다.  
구글 애널러틱스등의 통계등을 넣기도 상당히 손 쉽게 할 수 있어 보였다.