GCM은 Google Cloud Messaging에 약자로 서버에서 클라이언트(Android Application)으로 데이터를
보낼 수 있도록 구글에서 제공하는 무료 서비스이다.
간략하게 구조를 보자면, 서버에서 클라이언트에게 메세지를 전송하기 위해 GCM Sevice로 메세지를
보내면 GCM Service에서는 등록된 디바이스로 메세지를 전송하게 된다.
자세한 내용은 구글에 많이 있으니 참고하기 바란다.
일단 소개하려는 내용은 GCM 구조를 파악하기 위해 최대한 간단히 작성하며,
Application 내에서 메세지를 전송하고 다시 자신이 GCM 메세지를 받아 출력 하는 구조이다.
절차는 크게 아래와 같다.
1. 이클립스내에 SDK Manager에서 Google Cloud Messaging for Android Library 설치
2. Google Api Console 페이지에서 Project number(sender ID) 와 Api Key를 발급
3. 코드 작성 |
그럼 각 단계별로 세부적으로 살펴보자.
1. Google Cloud Messaging for Android Library 설치
GCM 서비스를 이용하기 위해서는 안드로이드 2.2(froyo)이상의 버전이 필요하며,
GCM 관련 라이브러리가 설치되어야 한다.
이클립스내에 SDK 매니저를 실행하여 GCM 서비스 라이브러리를 설치한다,
2. Google Api Console 페이지에서 Project Number 및 APIKey 발급받기
GCM 서비스 라이브러리 설치가 끝나면 기본적인 셋팅은 끝이다.
이제 자신의 프로젝트에서 GCM을 사용하기 위해 API 키를 발급받아야 한다.
Google API Console 페이지로 접속하자.
API Project를 한번도 생성한적이 없다면 아래와 같은 화면이 출력될 것이다.
Create Project를 클릭하자.
화면이 전환되면서 새로운 API Project가 생성되며, 해당 프로젝트에서 사용할
서비스를 선택하는 토글버튼 리스트가 출력된다.
GCM Service를 이용할 것이므로, Google Cloud Messaging for Android 서비스에 토글버튼을
on"으로 변경한다.
사용할 서비스 토글이 완료되면 다시 페이지 상단으로 가서 좌측 Project 메뉴들 중
API Access를 선택한다.
API 화면에서는 서버키를 생성하게 되는데 서버키는 서버에서 클라이언트로 push 메세지를 보낼때
사용되므로, 잘 기억하도록 하자.
아래와 같이 Create new Server key 버튼을 누른다.
버튼을 누르면 아래와 같이 팝업창이 뜨는데, 그냥 디폴트 값으로 생성한다.
입력박스를 비운채로 Create 버튼을 누른다.
이 과정이 끝나면 Server key 발급이 완료된다.
아래 빨간 박스 부분이 새로 생성한 Server key값이다.
나중에 작성 할 Application에서 필요하므로 아래 빨간박스안
검정선으로 가려진 부분값을 복사 해둔다.
이제 Project Number를 확인해야 한다.
Project Number는 Project ID로써 클라이언트에서 push메세지를 받았을 때
받은 push가 어떤 Application에서 받아야 할 push인지 구분을 위한 값이다.
다시 좌측 상단 메뉴에 Overview 메뉴를 클릭한다.
아래 그림에서 처럼 Project Number를 Server key와 마찬가지로 복사해둔다.
이 과정까지 하면 GCM 사용을 위한 기본 준비가 끝이다. 이제 간단한 Application 작성을
통해 GCM을 확인할 수 있다.
3. 코드작성
이제 새 프로젝트를 하나 생성한다.
GCM 사용을 위해선 GCM jar 파일을 라이브러리로 추가해야한다.
작성할 Application이 GCM 전송과 수신을 모두 하나의 단말에서 할 것이므로
서버측 라이브러리와 클라이언트 라이브러리를 모두 imort 하자.
클라이언트 라이브러리 : android-sdks/extras/google/gcm/gcm-client/dist/gcm.jar
서버 라이브러리 : /Users/cho5652/android-sdks/extras/google/gcm/gcm-server/dist/gcm-server.jar
이제 본격적으로 코드를 작성하자.
먼저 이전에 Google Api Console 페이지에서 발급한 Project Number와
Server key를 변수로 선언한다.
또한 Activity에서 push요청을 수행할 버튼과 push를 수신했을 때
Activity에서 토스트 팝업을 띄우기 위한 핸들러를 선언한다.
MainActivity를 열어서 onCreate() 안에 다음 코드를 추가한다.
아래 화면에서 senderId 에는 Project Number를
apiKey 에는 Server key를 넣는다.
|
이제 선언한 senderId를 이용해 자신의 디바이스를 등록한다.
getRegistrationId(Context) 메소드를 통해 등록된 Id를 받아오며,
등록된 Id값이 없을 경우 등록 작업을 수행한다.
|
다음은 push를 보내기 위한 버튼을 정의한다.
아래 동작은 서버에서 수행하는 경우가 대부분이며, 지금은 간단한 GCM 동작 확인해
클라이언트에서 바로 보내도록 하겠다.
Sender에 인자값으로는 Google API Console 페이지에서 발급 받았던,
Server key를 넣어준다.
메세지 데이터를 만들고, 전송작업을 수행한다.
|
이제 push가 왔을 경우 Broadcast receiver에 의해 수행 될 Service 클래스를 작성해야 한다.
Service 클래스의 이름은 GCMIntentService로 하며 이 클래스는 GCMBaseIntentService를
상속 받도록 한다.
GCMBaseIntentService를 상속받으면
onError(Context, String),
onMessage(Context, Intent),
onRegister(Context, String),
onUnregister(Context, String)
네가지 메소드를 오버라이드 하게된다.
|
onError(Context, String)는 push를 받을 때 에러가 날 경우 호출되는 콜백 메소드이며
에러 내용을 String값으로 전달해 준다.
onMessage(Context, Intent)는 push를 받을 경우 push 메세지에 데이터를 Intent값으로 받으며,
이 Intent값을 분석하여 득정 동작을 수행할 수 있다.
onRegister(Context, String), onUnregister(Context, String)은 GCM을 등록하거나 해제할때 콜백되며,
인자값으로 등록된 Id값을 받는다.
우리는 MainActivity에서 push를 보낸 후 다시 GCM service로 부터 push를 받아서
데이터에 담긴 내용을 토스트로 출력할 것이므로 해당 내용을 onMessage에 작성한다.
|
여기까지가 코드 적용 부분이다.
이제 마지막으로 manifest 파일에 permission을 추가하고,
위에 GCMIntentService를 등록하며, push메세지를 감지하기 위해 Android에서 제공하는
GCMBroadcastReceiver를 등록한다.
|
이렇게 하면 한대의 단말에서 push를 보내고 받을수 있다.
물론 GCM 본래 취지에는 어긋나지만 , 위 예제를 통해 GCM의 구조에 대해 어느정도 알수 있었다.
[출처] [Android GCM] 예제|작성자 안도이드
출처 : http://blog.naver.com/dolking1234?Redirect=Log&logNo=70168168716
'Language > Android' 카테고리의 다른 글
[펌] 안드로이드 에뮬레이터 네트워킹 설정 (Android Emulator Networking) (0) | 2013.12.14 |
---|---|
[ 안드로이드 개발 2.0] Hello Android 출력하기 (0) | 2010.04.25 |
[ 안드로이드 개발 2.0 ] 개발환경구축하기5 - Virtual Device 생성 (0) | 2010.04.25 |
[ 안드로이드 개발 2.0 ] 개발환경구축하기4 - Available Package 추가등록 (0) | 2010.04.25 |
[ 안드로이드 개발 2.0 ] 개발환경 구축하기3 - SDK 와 이클립스 연동 (0) | 2010.04.25 |