2010. 10. 13. 16:02

C2DM





C2DM (Cloud to Device Messaging) 은 인터넷에서 안드로이드 폰에 메시지를 보낼수 있는 기술이다.

인터넷에 최신 정보가 올라와 있는 데도 휴대폰이 서버에 접속해서 알아 보기 전 까지는
최신 정보가 올라와 있는 줄 모른다. 그 이전에는 일일이 휴대폰에서 특정 시간 간격으로
서버에 접속해 알아 보아야 했다. 이럴 경우 문제가 되는 것은 배터리 소모가 많고 네트웍
트래픽이 증가 한다는 문제점이 있다.

이를 위한 해결책으로 C2DM 이 나왔다.

이 기술을 사용하기 위해서는 안드로이드 2.2 가 설치된 폰에서
마켓에 등록된 앱을 사용해야 한다. 아직은 정식 릴리즈 되지 않았기
때문에 등록 신청한 후 시험해 볼 수 있다.

먼저 전체적인 그림을 보면 다음과 같은 구성 요소들이 있다.

1. 안드로이드 폰
2. 어플리케이션 서버
3. C2DM 서버

안드로이드 폰에서 푸시 기능을 사용하고 싶다면 다음과 같은 절차가 필요하다.

1. 안드로이드 폰에서 푸시 기능 활성화 하기
2. 어플리케이션 서버에서 C2DM 서버로 메시지 보내기
3. C2DM 서버에서 해당 안드로이드 폰으로 메시지 전달하기

안드로이드 폰 사용자들이 마켓에서 앱을 다운로드 받아 설치 할 때
앱이 C2DM 기능을 가지고 있다는 정보를 받고 이 기능을 사용할지 않을지를
선택 할 수 있다.

실제로 C2DM 을 사용하는 앱을 개발하는 절차를 알아보자

1. AndroidManifest.xml
   1.1. Permission
- RECEIVE
- C2D_MESSAGE
- INTERNET
   1.2. Receiver
1.2.1. intent filters
- RECEIVE
- REGISTRATION

2. C2DM 에 등록하기
   2.1. REGISTER 인텐트 생성 with sender and app
   2.2. startService

3. 등록 결과 처리하기

   단계 2 에서 REGISTER 인텐트를 날리면 등록 ID 값을 가진 인텐트를 받게 되는데
   이 인텐트를 받아 어플리케이션 서버에 내 등록 ID 를 전달하여야 한다.

4. 메시지 처리 하기

   등록이 성공하면 어플리케이션 서버는 언제든지 메시지를 보낼수 있는데
   메시지는 크기는 1024 바이트로 제한된다. 따라서 전체 데이타를 다 보내기 보다는
   어플리케이션에게 새로운 데이타가 있으니 접속해서 업데이트 하라는 메시지만
   보내야 한다.

어플리케이션 서버가 C2DM 서버에게 메시지를 보내기 위해서는 HTTP POST 를
https://android.apis.google.com/c2dm/send 를 사용하여 보내면 된다.

원문 http://joejeon.tistory.com/310