본문 바로가기

programmer/개발

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

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>



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