GCM(google cloud messaging)을 이용한 푸쉬서비스 구현


.


(build.gradle 설정, 매니페스트 파일 수정)


3.



이제 build.gradle을 설정해보겠습니다.


gradle파일을 수정함으로써 프로젝트에 필요한 dependencies 라이브러리를 자동으로 다운로드 받을 수 있습니다. 먼저 프로젝트의 build.gradle파일을 열어서 다음과 같이 classpath를 추가합니다.


enter image description here

classpath ‘com.google.gms:google-services:1.5.0-beta2’

추가합니다. https://developers.google.com/cloud-messaging/android/client#add-config에서 gradle설정에 대한 내용을 더 자세하게 확인할 수 있습니다.


그리고 app module에 있는 build.gradle에 다음과 같이 dependencies를 추가합니다. 컴파일할 때 필요한 라이브러리를 자동으로 다운받아줍니다.


enter image description here


위와 같이 compile “com.google.android.gms:play-services:8.3.0”를 추가합니다.


이러한 설정을 통해 필요한 파일들을 자동으로 다운받을 수 있게 됩니다. 자동으로 다운로드가 안되어서 진행 도중에 없다고 뜨는 경우에 새로고침을 눌러주면 해결할 수 있습니다.

4.



이제 매니페스트 파일을 수정하겠습니다. 매니페스트 파일은 애플리케이션에 AndroidManifest.xml이라는 이름으로 존재합니다. 컴포넌트를 선언하고, 애플리케이션이 요청하는 권한을 지정하고, 최소한의 API 레벨을 선언하고, 필요한 하드웨어 사양을 선언하는 등의 일을 수행합니다. 가장 중요한 것은 애플리케이션의 컴포넌트에 대해서 알리는 것입니다.


먼저 매니페스트 파일을 다음과 같이 수정합니다.


enter image description here


추가된 부분은 다음과 같습니다.

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />



gcm 서버로부터 메세지를 받는 권한과 디바이스의 화면이 꺼져있는 경우에도 푸쉬메세지를 받을 수 있도록하는 권한을 받았습니다. 자세한 내용은 https://developers.google.com/cloud-messaging/android/client#manifest에서 확인할 수 있습니다.


이제 gcm을 위해 필요한 매니페스트들을 하나씩 추가하도록 하겠습니다. application안에 추가하도록 합니다. 먼저 gcm receiver를 추가합니다. 아래부터 나오는 코드들은 https://developers.google.com/cloud-messaging/android/client#manifest 이 곳에서 복사하실 수 있습니다.


enter image description here


추가했더니 빨간색으로 표시된 부분이 보입니다. 라이브러리가 아직 다운로드되지 않은 것입니다.


enter image description here


이러한 경우에 Sync Project with Gradle Files를 직접 눌러줘서 해결할 수 있습니다. 눌러준 후, 일정 시간을 기다리면 build.gradle에서 설정해두었던 라이브러리가 다운로드되고 다음과 같이 빨간색이 사라지는 것을 확인할 수 있습니다.


enter image description here


정상적으로 다운로드되었고 에러가 사라졌습니다.


이제 GCM Listener Service를 선언하겠습니다.


enter image description here


아래 코드를 추가하였습니다.

<service
      android:name="com.example.choo_gcm.MyGcmListenerService"
      android:exported="false">
      <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
      </intent-filter>
</service>



com.example.choo_gcm 부분은 처음 프로젝트 만들 때 생성된 자신의 프로젝트의 패키지명을 넣어주시면 됩니다. MyGcmListenerService가 빨간색으로 에러가 뜨는 이유는 아직 존재하지 않기 때문입니다. 나중에 만들 것이므로 우선 그냥 넘어가시면 됩니다.


위와 같은 방법으로 InstanceID Listener Service를 추가하겠습니다.


enter image description here

<service
      android:name="com.example.choo_gcm.MyInstanceIDListenerService"
      android:exported="false">
      <intent-filter>
          <action android:name="com.google.android.gms.iid.InstanceID" />
      </intent-filter>
</service>


마찬가지로 패키지 명을 알맞게 수정해주시고, 아직 MyInstanceIDListenerService를 만들지 않았기 때문에 빨간색으로 나오는 것이 정상입니다.


그리고 GCM Registration Service도 추가합니다.


enter image description here

<service
      android:name="com.example.choo_gcm.RegistrationIntentService"
      android:exported="false">
</service>



그러면 위와 같은 매니페스트 파일이 완성됩니다.

  1. 2016.03.21 10:17

    다음 글은 언제올라오죠..? 너무 설명이 잘되어있어서 보기좋네요

    • 다무찌 2016.03.21 11:04 신고

      ㅎㅎ 댓글 감사합니다.며칠 내에 올리겠습니다^^

    • 다무찌 2016.04.05 19:22 신고

      이것 저것 하다보니 계속 미뤄지게 되네요 ㅠㅠ 4월 안에는 꼭 올리겠습니다.

  2. 2016.04.30 18:59

    비밀댓글입니다

    • 다무찌 2016.05.10 23:18 신고

      면목이 없네요 ㅠㅠ 방문자 올리기위한 글이 아니라서 날잡고 제대로 쓰고 싶은데 제가 게을러서 그렇습니다 ㅠㅠ 빠른 시일내로 쓸 수 있도록 노력하겠습니다.

  3. ㅎㅎ 2016.05.12 13:59

    설명너무 자세해서 너무 잘 이해할수 있었어요 ^^ 감사합니다
    다음글이 빨리 올라오면 좋겠네요..

  4. 2016.06.18 22:29

    비밀댓글입니다

  5. 2016.06.18 22:32

    비밀댓글입니다

  6. ㅠㅠ 2016.06.22 10:51

    설명이 잘되어있어서 좋았는데
    다음글은 언제쯤 올려주시나요??

  7. jo 2016.08.23 14:19

    뒷부분 언제올라오나요?..

+ Recent posts