본문 바로가기

6. With IT/6.1 Android

GCM 푸시서버연동 설정 - Client

참고 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0qCVX&articleno=11

작성시기 : 2015.04.10

[간략소개]

출처 : http://musasin84.blog.me/60212095039

GCM의 그림

 



 

Google에서 제공하는 메시지 발송 서비스이다. Google Cloud Messaging 의 약어로, 기존에는 C2DM이었으나 C2DM 서비스를 종료하고 GCM으로 바꾸었다. 이 서비스를 이용하기 위해서는 ANDROID Froyo (API Lev 8) 이상이 되어야 한다.

 

메시지는 최대 4KB 크기로 보낼 수 있으며, 이 서비스를 통해 카카오톡, 채팅, 알림 등의 서비스 구현이 가능하다. 100%의 성공률 수신은 장담할 수 없지만 과거 C2DM에 비해 GCM은 성공률이 많이 좋아졌다고 한다. 

 

GCM 발송 프로세스

 



 

1. 앱 어플리케이션에서 RegistrationID를 발급요청

   이 때, GCM 에서 신청한 Project ID를 이용하여 발급요청

2. 발급된 Registration ID를 서버에 저장 시킨 후 이 것을 이용하여 메시지를 전달한다.

   이 때, GCM 에서 신청한 API Key, 앱에서 생성된 RegistrationID, 메시지를 GCM Push Server

   에 전달한다.

3. GCM Push Server에서는 2번에서 보낸 항목들을 확인 후 단말기에 메시지를 보낸다.



[GCM설정]

1. GCM 프로젝트 등록

- 우선 GCM을 사용하기 위해서는 GCM에 프로젝트를 등록하고 API를 획득해서 사용해야한다. GCM에 프로젝트를 등록하기 위해서는 Google Developers Console을 연다.


Google Developer Console


Create Project를 눌러 프로젝트 생성 후(프로젝트 이름 / 프로젝트 ID 입력)



위화면에 보이는 Project Number를 잘 기억해둔다.

(1. 앱 어플리케이션에서 RegistrationID를 발급요청 이 때, GCM 에서 신청한 Project ID를 이용하여 발급요청.)


2. Google Cloud Messaging for Anroid 활성화


[APIs & auth -> APIs] 를 클릭하면 다음 화면이 나온다.



여기에서 'Cloud Messaging for Android'로 들어가면 해당 API를 활성화시키는 [Enable API]버튼이 있다. 이를 눌러준다.





3. API Access Key 생성


[Credentials] 로 들어가 'Create new Key'를 눌러 API access key를 생성한다. 여러 환경에서 사용할 key를 만드는데, 우리는 Android key를 선택한다.







드디어 API Key를 받급받았다. 이 API Key는 Client에서 GCM Push Server을 이용해 푸시를 받을 수 있는 registration_id값을 획득하는데 사용된다.

(2. 발급된 Registration ID를 서버에 저장 시킨 후 이 것을 이용하여 메시지를 전달한다.

   이 때, GCM 에서 신청한 API Key, 앱에서 생성된 RegistrationID, 메시지를 GCM Push Server

   에 전달한다.)

 

[GCM예제코드]

1. 구글에서 이미 GCM관련 코드를 제공. 소스 다운로드


https://github.com/google/gcm



2. Google Play Service SDK 다운로드

  인터넷에서 GCM 구현에 관련된 글들을 찾아보면 대부분 gcm.jar를 사용하는데 gcm.jar 역시 deprecate 되었다. 그래서 위에서 다운받은 gcm-client-deprecated를 살펴보면 dist 디렉토리 안에 gcm.jar가 포함되어 있는 것을 확인할 수 있다. 

  하지만 Google에서는 Cloud Messaging Service는 모두 Google Play Service 로 통합되었기 때문에 gcm.jar를 사용하는 포스팅을 참조하기 보다는 Google Play Service SDK를 사용한 예제를 참조하는것이 좋다. 

  Google Play Service SDK는 기본적으로 android SDK를 다운 받는다고 설치되는 것이 아니라 extra 로 따로 다운 받아야 한다. android SDK Manager를 열어서 Google Play Service SDK를 다운로드한다.


3. 소스 추가

다운 받은 소스코드의 내용 중, gcm-client 부분을 이클립스에서 프로젝트 추가로 추가시켜놓는다.







여기에서 추가로 특정 lib를 설정해놓아야한다.

[Google Play Service]

\sdk\extras\google\google_play_services\libproject\google-play-services_lib\libs

[android-support-v4]

\sdk\extras\android\support\v4


두개의 라이브러리를 libs폴더를 생성한 후, 추가시킨다.



4. 개인 프로젝트를 따로 만들어서 프로젝트를 만들 경우 다음 파일들을 추가한다.

[Google Play Service version.xml 파일]

\sdk\extras\google\google_play_services\libproject\google-play-services_lib\res\values\version.xml

[리소스 파일]

이전에 다운받은 gcm-client디렉토리에서 resources들을 복사

gcm-client\GcmClient\src\main\res\모든폴더

(소스 내용 중, Notofication에서 아이콘 설정시, 쓰임. 만약 본인의 앱에 아이콘이 따로 있다면 설정하지 말고 소스 내용중 Notification관련 설정 부분을 수정하면됨.)



5. AndroidManifest.xml 수정

GCM설정을 위해 다음 코드를 추가한다.


    

    
    

    
    

    
    
    

    
    





        
            
                
                
                
                
                
            
        

        
        
    






6. 프로젝트 Clean -> Build -> Run 과정을 거치면 정상적으로 registrationid를 획득할 수 있을 것이다.!!!




'6. With IT > 6.1 Android' 카테고리의 다른 글

FragmentPagerAdapter, FragmentStatePagerAdapter의 사용  (0) 2015.05.18
GCM 푸시서버연동 설정 - Server  (1) 2015.04.10
ScalableLayout  (0) 2015.03.06
EventBus기법  (0) 2015.03.06
Meterial Design Example  (0) 2014.12.23