본문 바로가기

Android/NetWork

안드로이드/Android C2DM 이란?


 < 개발 환경 > 
   SDK 버전 : 안드로이드 SDK 2.2  
   API LEVEL : 8 
   이클립스 버젼 : Indigo
   테스트단말 : 삼성갤럭시 S2



안드로이드/Android C2DM 이란?


안녕하세요.!! 오늘은 날씨 너무 덥네요. 앉아만 있어도 후덥지근한... 후... 오늘 서울이 28도 까지 올라간 초여름 날씨 였다고 하는데요.!! 자 다들 그래도 열심히 해서 실력을 업그레이드 해보자구요!! 아자!!


자 오늘 알아볼 내용은 C2DM 사용 방법 입니다. 음 C2DM이 모지?? 라고 생각하시거나.. 한두번 들어보신 분들도 많으실텐데요. C2DM이란 (Cloud to device message) 의 줄임말 입니다. 먼저 생각해 보실게 Cloud 라는 단어 인데요.! 다들 아시다시피 "구름" 이라는 단어 입니다. 구름이라고 하면 어떤 이미지가 떠오르시나요? 예전에 한번쯤은 보셨던 이 그림이 떠오르셔야 할텐데요!


그림 출처 : http://technorati.com/technology/cloud-computing/article/cloud-computing-to-grow-1200-by/



아~~ 생각이나시나요? ㅎ 저도 생각이 나는군요 ㅎㅎ 구름을 사이에두고 PC, Mobile, Database 등이 연결되어 있는데요, 이렇듯 C2DM 역시 구름을 사용한 메시지 전송쯤 이라고 생각하시면 됩니다. 기기들간에 통신을 해주는 구름(매개체) 역할을 해주는게 바로 C2DM 입니다. 


이러한 좋은 서비스를 구글에서 제공해 주고 있는데요.!! 가만.. 그런데 C2DM 은 왜 필요한 것 일까요? DB 에 접속해서 필요한 값을 가져와서 사용하면 될텐데.. 굳이 C2DM을 쓸 필요가 있을까 하는 생각이 드실텐데요.!! 바로 이런 이유에서 사용하게 됩니다.


DB에서 변경 내용이 있을 경우, 사용자(Device) 가 바뀐 내용을 알아야 할때는 DB 상태를 매번 확인해야 하는 작업을 해야 합니다. 그렇기 때문에 서비스를 돌려서 주기마나 한번씩 DB를 확인 하게 되는데요. 매번 DB에 접속해서 변경된 값이 있나 없나를 확인하는 작업은 굉장히 소모적이고 비효율적인 작업 입니다. DB뿐 아니라 사용자(Device) 입장에서도 과부하가 걸리기 쉬운 작업이기 때문이지요. 


그렇기 때문에, 구글에서는 C2DM이라는 서버를 만들어서, DB 와 사용자(Device) 모두에게 효율적인 서비스를 제공해주고 있습니다. C2DM서버는  DB 와 사용자(Device)간에 연결 고리 역활을 하며, DB에서 사용자(Device)에게 메시지 전송(PUSH) 을 할 수 있도록 도와 줍니다. 그렇다면 그림을 통해 C2DM에 구조에 대해 한번 알아 보겠습니다. 


그림 원본 : http://aldehyde7.tistory.com/155

클릭 하시면 더 큰 이미지로 보실 수 있습니다.

 


이렇듯 C2DM은 처음에 본 그림 이미지와 같은 구조를 가지고 있다는 사실을 알 수 있습니다. 어떠신가요? 슬슬 감이 오시나요? 에효 저는 그림그리느라 죽을뻔했다는...--;;ㅎㅎ 그림판으로 1시간을 씨름했네요 ㅎㅎ 여담으고 여기서는 구조는 이렇구나 하고 흐름만 이해 하시면 됩니다. 참 흥미진진하죠잉?


자 그럼 하나하나 순서대로 분석해 보겠습니다. 

1. C2DM 등록 :  말 그대로 C2DM서비스에 등록하고자 하는 APP(Package)를 등록 해주는 과정 입니다. 이 과정에서는 "sender" 로 사용할 구글계정이 필요 합니다. "sender"란 C2DM에 접속할 때 사용해 주는 ID정도로 생각해 주시면 됩니다.

2. C2DM 등록 인증 C2DM서비스에 등록을 신청한 APP(Package)의 승인 유무를 확인 하는 과정 입니다. 승인이 됬을 경우 연락받을 email 에 등록한 메일로 승인메일이 발송 됩니다.

3. 서버 등록 : C2DM에 DB를 등록 하는 과정 입니다. 기존의 폴링(Polling : 서비스로 계속해서 DB를 체크하는 방법) 서비스말고 PUSH 서비스를 사용하기 위해 C2DM 서버에 등록 하는 과정 입니다.

4. 서버 인증 : C2DM에 재대로 DB가 등록되었는지 확인 하는 과정 입니다. 인증 성공시 인증키(AuthKey)를 획득 할 수 있습니다. 인증키(AuthKey)를 사용해야만 푸쉬(PUSH) 기능을 사용 할 수 있습니다.

5. Device 등록 : C2DM 서비스를 제공 받고자 하는 Device를 등록 하는 과정 입니다. 등록 하고자 하는 Device 마다 "sender" 메일을 이용한 C2DM 서비스를 신청 하게 됩니다.

6. Device 등록 인증 : C2DM 서비스를 신청한 Device가 등록 되었는지 확인 하는 과정 입니다. 등록 성공시 Device마다 등록 아이디(Registraion_ID)를 발급 받습니다.

7. 등록 아이디 저장 : 6번 과정에서 등록 인증 성공시 받았던, 등록 아이디(Registraion_ID)를 DB에 저장 하는 과정 입니다. 

8. 푸쉬(PUSH) 요청 : DB에서 사용자(Device)에게 변경된 내용을 알려 주고 싶을때(메시지를 푸쉬(PUSH) 하고 싶을때), 전달할 메시지를 C2DM 서버에 전달해 주는 과정 입니다. 

9. 푸쉬(PUSH) : DB에서 전달 받은 푸쉬(PUSH) 메시지를, 등록 아이디(Registraion_ID)를 가진 Device에게 전달 해 줍니다.



이러한 과정을 통해 사용자(Device)에게 메시지가 전달 됩니다. 메시지는 단말마다 고유한 패키지를 이용해서 전달 받기 때문에 한개 이상의 푸쉬(PUSH) 서비스를 이용 할 수 있습니다. 자 그럼 다음 장에서는 실제 C2DM을 활용해서 전달받은 메시지를 notification 으로 확인 하는 예제를 만들어 보겠 습니다.


자 여기까지 이해하고 따라 오셨다면, C2DM 정복에 9부 능선을 넘었다고 해도 과언이 아닙니다. 축하 드리고요. 그럼 다음 포스팅때 뵙겠습니다. 


PS. 주의할점은 C2DM 서비스는 안드로이드 2.2 API 8 부터 지원하기 때문에, 이전 버전에서는 사용 하실 수 없습니다. 꼭 주의하세요.~!!