C2DM 은 써드파티 개발자들이 간단한 데이타 메세지를 폰으로 푸쉬할 수 있도록 지원합니다.
C2DM 기능을 이용하여, 우리는 다른 구글 개발자 도구들을 이용하여 간단하지만 유용한 어플리케이션을 만들 기회를 갖게
되었습니다. 그 것이 바로 Chrome to Phone 기능입니다. 사용자들이 자신의 데스크탑이나 노트북 컴퓨터에서 간단한
링크나 데이타 정보를 휴대폰으로 푸쉬할 수 있게 만들어 주는 기능이지요. 이 프로젝트는 자신의 근무시간 중 20%는 원하는
프로젝트를 진행할 수 있도록 보장하는 구글의 20% 프로젝트의 결과물 중 하나입니다.
Chrome to Phone 은 크롬 브라우저 플러그인과, 안드로이드 어플리케이션, 그리고 구글의 AppEngine 서버로 구성되어있습니다. 작성된 모든 소스 코드는 공개되어 있으며, C2DM 을 어떻게 사용할 수 있는지에 관한 훌륭한 예시가 될것이라고
생각합니다. Chrome to Phone 기능에서 사용되는 데이타 메세지의 흐름은 일반적인 푸쉬 서비스와 동일합니다.
안드로이드 어플리케이션이 C2DM 서비스에 자신을 등록하며, 사용자를 위한 디바이스 ID 를 요청합니다. 그 후, 넘겨받은 Registration ID 를 사용자 계정 정보와 함께 AppEngine 서버에 전달합니다.
AppEngine 서버는 사용자 계정 정보를 인증한 후, 계정 이름을 디바이스 Registration ID 에 매핑하여 저장해 둡니다.
크롬 브라우저의 플러그인 모듈은 현재 브라우저 탭의 URL 과 페이지 제목을 AppEngine 서버에 POST 형식으로 전송합니다.
AppEngine 서버는 사용자 계정 정보를 인증 한 후, 해당 사용자 계정과 매핑되는 디바이스 Registration ID 를 확인합니다. 그 후, HTTP POST 형식을 이용하여, URL 과 페이지 제목 정보를 구글의 C2DM 서버에 전송합니다. C2DM 서버는 전달 받은 메세지를 디바이스에 중계해주며, 디바이스는 전달은 메세지를 브로드캐스트 인텐트로 생성합니다.
안드로이드 어플리케이션은 브로드캐스트 인텐트에 의해 깨어납니다. 안드로이드 어플리케이션은 전달받은 URL 정보를 이용하여, 적절한 어플리케이션을 실행시켜 줍니다. (e.g. 인터넷 브라우저, 전화기, 구글 맵 등).
여기서 어플리케이션 디자인 상에서 재미있는 점 한가지는,
URL 과 페이지 제목 정보를 푸쉬 메세지의 일부분으로 포함하여 직접 전송한다는 점 입니다. URL 해쉬 정보는 사용자들이
버튼을 중복하여 누를 경우, 동일한 메세지가 디바이스로 중복되어 전달되는 것을 막기 위해 Collapse_Key (주>이 값이
같을 경우, C2DM 서버는 기존에 전달한 동일한 메세지로 판별하고 해당 메세지를 재전송하지 않습니다.) 로 사용됩니다.
원칙적으로는 전체 URL 이 Collapse_Key 로 사용되어야 하지만, 해쉬를 사용하면 더 길이가 짧으며 불필요하게 오고가는 데이타 양의 커지는 것을 방지할 수 있습니다. 또다른 대안은 (오고가는 데이타의 크기가 큰 경우에는 조금 더 선호되는)
푸쉬 메세지 서비스가 클라이언트 어플리케이션을 깨우는데다 사용되고 실재 데이터는 클라이언트 쪽에서 별도의 채널을 통해 접근하도록 구현할 수도 있습니다.
Chrome to Phone 의 코드는 여기에 공개되어 있습니다. AppEngine 과 안드로이드 어플리케이션 양쪽 모두 재사용
가능한 com.google.android.c2dm 패키지를 포함하고 있습니다. 이 패키지는 C2DM 을 이용하여 폰과 서버가
상호작용하는데 필요한 로우레벨 작업을 수행합니다. (예를들어 환경 설정이나, 작업 Queue 관리등과 같은)
Chrome to Phone 기능은 유용합니다. 하지만 동시에, 무엇보다도 안드로이드 C2DM 서비스를 어떻게 사용할 수 있는지에 관한 가장 흥미로운 예제가 될 것 입니다.
지난 구글 I/O 2010에서 소개되었던 기능이죠. 구글 Chrome to Phone이 정식 릴리즈 되었습니다.
Google Chrome to Phone은 이런 기능을 위해 Android Cloud to Device Messaging (C2DM) service를 이용합니다. 그런데 이게 안드로이드2.2버전 부터 지원되기 때문에 구글 Chrome to Phone도 안드로이드2.2부터 사용가능한거죠.
저는 Google Chrome to Phone 기능이 데스크톱과 휴대폰의 경계를 허무는 진정한 시발점이라고 평가 하고 싶습니다. 지금은 간단하게 웹페이지만 푸시 해주지만, 좀 더 나아간다면 PC에서 하던 작업(문서 작업)을 클릭 한번으로 휴대폰으로
넘기고, 휴대폰에서 계속 이어 하다가, 역시 간단한 클릭 한번만으로 PC로 넘길 수 있을겁니다. 아마도 크롬OS에서 그런
기능을 구현해 주겠죠. 어렇게 PC와 휴대폰을 자연스럽게 연계해준다는 점에서 의미가 큰것 같습니다.
한국에서는 아직은 만나보기 어려울것 같네요. 안드로이드 2.2라면 넥서스원만 현재 공식적으로 지원하고 있고,
한글 크롬을 지원하지 않는걸 보면 한글 서비스는 아직 준비가 안되었나 봅니다. 곧 한국에서도 정식 지원이 되길 기대해 봅니다.