2015년 3월 29일 일요일

[ Android ] GCM Client 만들기

 카카오톡에서 새로운 메시지가 왔을때 알림이나, 각종 게임 접속유도 알림은 푸시를 이용합니다. 이번 튜토리얼은 푸시를 받는 클라이언트에 대해 알아보겠습니다.


1. GCM을 사용하기 전에
 GCM을 사용하기 위해서는 구글 개발자 콘솔에서 프로젝트를 등록해줘야 합니다.
https://console.developers.google.com/project 해당 URL로 이동해서 새로운 프로젝트를 만들어 줍니다(저는 GCM Test로 생성했습니다). 프로젝트 생성 후 왼쪽에 개요를 누르면 프로젝트 번호가 출력됩니다 푸시 클라이언트를 만들때 해당 번호가 필요합니다. 새로운 프로젝트를 생성고 좌측의 API 부분을 누르면 아래와 같은 페이지가 출력 됩니다.


 우측에 Mobile APIs 카테고리의 Cloud Messaging for Android를 누르고 'API 사용 설정' 버튼을 눌러 사용이 가능하도록 변경합니다.
 그리고 좌측에 '사용자 인증 정보'를 눌러 '새 키 만들기' 버튼을 클릭하고 출력되는 팝업에서 '서버 키'를 선택합니다.
 GCM을 보내는 플랫폼에 따라서 키를 선택하면 되는데 해당 튜토리얼에서는 서버에서 GCM을 보낼것이므로 '서버 키'를 선택합니다.


 Key 생성을 완료하면 'API 키'가 생성이 되는데 해당 부분을 프로젝트 번호와 함께 적어둡니다.


2. Android 프로젝트 만들기
 새로운 프로젝트를 하나 생성합니다. 저는 API 16, 4.1(젤리빈) 프로젝트로 생성했습니다.


3. 매니페스트 수정
 GCM을 사용하기위해 몇가지 퍼미션과 리시버를 등록해주어야 합니다.

 퍼미션을 동일하게 작성해주어도 상관이 없지만 리시버 부분의 패키지명은 본인 프로젝트에 맞게 수정해주어야 합니다.
 receiver - intent-filter - category android:name="패키지명" : 프로젝트 패키지 이름


4. GCM 클라이언트 만들기
 프로젝트에 Google Play Service 라이브러리를 추가합니다. (없으신 분들은 SDK를 업데이트 후 추가해주세요)
 그리고 https://github.com/google/gcm GCM 오픈소스를 다운받아 클라이언트 부분의 GcmBroadcastReceiver, GcmIntentService 파일을 프로젝트에 추가합니다.
 MainActivity에서 푸시ID를 얻기위해 코드를 작성합니다.

 위 코드는 GCM 오픈소스 프로젝트의 DemoActivity를 수정하여 만들었습니다.
SENDER_ID에 1번 작업에서 적어놓았던 프로젝트 번호를 넣어줍니다. 앱을 실행하면 로그에 등록ID가 출력됩니다. 해당 ID는 서버쪽에서 클라이언트로 푸시를 보낼때 사용됩니다.

 푸시가 도착했을때 기본적으로는 알림이 출력됩니다. 해당 액션을 변경하고 싶으신 분들은 GcmIntentService 클래스의 sendNotification() 함수 내용을 수정하시면 됩니다.

댓글 8개:

  1. 감사히 잘 봤습니다. GCM 관련 구현을 해야하는데, 많은 도움이 되었습니다. ^^

    답글삭제
  2. 안녕하세요 내용중 GCM 오픈소스를 다운받아 클라이언트 부분의 GcmBroadcastReceiver, GcmIntentService 파일을 프로젝트에 추가합니다.
    파일은 받고 찾아봐도 위 내용의 파일이 없어 댓글 남깁니다 조언 부탁드립니다

    답글삭제
    답글
    1. sdk 설치 경로의 android-sdk/extras/google/gcm/ 안에서 해당 파일을 얻을 수 있습니다.
      만약 해당 폴더가 보이지 않으면 sdk를 업데이트 후 확인해보세요.

      삭제
  3. import com.google.android.gms.gcm.GoogleCloudMessaging;
    계속 에러가 나요
    GoogleCloudMessaging 이부분도 바찬가지구요
    GoogleCloudMessaging 이파일은 어디 있나요?

    답글삭제
    답글
    1. 프로젝트에 Google Play Service 라이브러리를 추가해주셨나요?
      해당 라이브러리가 없으시면 SDK를 최선버전으로 업데이트 해보세요.

      삭제
  4. 안녕하세요 내용중 GCM 오픈소스를 다운받아 클라이언트 부분의 GcmBroadcastReceiver, GcmIntentService 파일을 프로젝트에 추가합니다. 질문한 사람과 똑같은 질문을 합니다.

    다운로드받아서 알집으로 압축으로 풀었는데 안보입니다. 두가지 화일을 어디서 찾아야하나요..?

    답글삭제
  5. 작성자가 댓글을 삭제했습니다.

    답글삭제
  6. 프로젝트에 Google Play Service 라이브러리를 추가합니다. (없으신 분들은 SDK를 업데이트 후 추가해주세요)

    이부분 안드로이드 스튜디오 sdk 메니져에서 설치하였습니다. ㅜㅠ 그후 경로를 봐도 아무것도없고 ㅜㅠ

    답글삭제

Post List