2013년 5월 6일 월요일

안드로이드 GCM Framework


안드뢰이드는 기존의 C2DM 서비스를 GCM (Google Cloud Messaging service) 로 변경하였다.

앞으로 푸쉬메시지 서비스를 이용하고자 하면 GCM을 사용하여야 한다.

GCM에 관해 알아보자.

- GCM 은 메시지의 전송과 메시지의 전송 순서를 보장하지 않는다. ( 전송이 되지 않을 수도 있다는 말입니다.)
- Android Application이 실행중이지 않아도 된다. msg(메시지)가 수신되면 알아서 broadcast와 Service를 통해서 자동으로 wake up 시킨다.
- GCM은 별도의  UI없이 단순히 raw msg 전달의 목적만을 가진다.
- Android 2.2 이상의 OS를 탑재한 디바이스부터 서비스가 가능하다.
- Google Play Store(구글마켓)이 Install되어 있어야 하며, Android 3.0 이하 버전에서는 Google 계정이 등록되어 있어야 한다.( Android 4.0.4 이상은 제외 )


 GCM Service 구성요소

1. 구성요소
1. Android 디바이스
- Android 2.2 OS 이상이 탑재된 디바이스
- Google Play Store이 Install된 디바이스
- Google Account 가 설정이 되어 있는 디바이스


2. 서드파티 Application Server
- Google GCM Server가 Application으로 메시지를 전송하게 하게끔 알려주는 서버

3. Google GCM Server

2. 통신 및 인증을 위해 필요한 Key, ID 등...
1. SenderID
- Google API Console에 있는 Project ID.

2. Application ID
- manifest의 pachage name으로 GCM에서 어떠한 Application으로 메시지를 보내는지의 구분값으로 사용.

3. Registration ID
- GCM Server가 Android Application에 assign 한 ID로, 한번 디바이스가 ID를 부여받으면 이것을 서드파티 Application Server에 등록해야 한다.
- Registration ID와 Application ID를 통해서 특정 디바이스의 특정 Application을 구분한다.

4. Google User Account

5. Sender Auth Token
- Google Server에 접속할 수 있는 API KEY로 POST header에 포함되어야 한다.

3. LifeCycle Flow
1. Enabling GCM : Application이 GCM Server와 서드파티 Application Server 에 ID 등록
Messageing service를 사용하기 위해 GCM Server에 인텐트를 날려야 한다 이 인텐트는 com.google.android.c2dm.intent.REGISTER로 Extra에 senderID와 Android Application ID를 전달해야 한다.
보통 이 작업은 onCreate()에서 한다.

만약 등록이 성공적으로 이루어진다면, GCM Server에서 com.google.android.c2dm.intent.REGISTERATION 인텐트를 registration ID와 함께 전달한다.
Application은 이 아이디를 나중에 사용하기 위해 저장한다 ( 프레프런스 이용, 값이 있다면 재활용 하려는 목적으로 저장 )
Google이 주기적으로 registration ID를 갱신할 수 있기 때문에,  com.google.android.c2dm.intent.REGISTRATION이 여러번 호출 될 수 있다.

등록완료를 위해서는 이 registration ID를 서드파티 Application Server에 등록해야 한다.
이 registration ID는 명시적으로 unregister 하기 전까지나, Google이 registration ID 를 새롭게 갱신하기 전까지는 유효하다
디바이스에서 Applcation을 삭제할 경우 Google이 자체적으로 갱신하거나, unregister를 하지 않고, 메시지를 전송했을때 디바이스가 해당 Application을 삭제했다는 피드백을 Google Server에 주면 그때 unregister된다.
2. Sending a message : 서드파티 Application Server가 GCM Server로 message를 전송
서드파티 Application Server 단발에 Message를 보내기 위해서는 android Application이 registration ID를 부여받아야 하며, 이 ID를 서버도 알고 있어야 한다.
또한 서드파티 Application Server에서 Google GCM Server 접속을 위해 API KEY가 있어야 한다.
3. Receving a message : Android Application이 GCM Server로 부터 message 수신.



출처 : http://darrysea.tistory.com/54 (MoonssDev 님)

댓글 없음:

댓글 쓰기

문의하기

이름

이메일 *

메시지 *