구글 클라우드 메세징(GCM) 설정
https://developers.google.com/cloud-messaging/?hl=ko
위의 사이트에서 TRY IT ON ANDROID 를 클릭하면 안드로이드 GCM 설정에 대한 자세한 설며이 나와있다.
( https://developers.google.com/cloud-messaging/android/start?hl=ko )
우선 GCM을 적용할 안드로이드 프로젝트의 이름과 패키지명을 알고있어야 하며,
프로젝트가 없다면 만들고 나서 사이트로 접속을 한다.
아래와 같은 화면에서 GET A CONFIGURATION FILE 버튼을 클릭한다.
아래와 같은 화면이 나오면,
어플리케이션 프로젝트 명을 적고 패키지명을 적는다.
그 후 Choose and configure services라는 버튼을 클릭하여 API Key를 생성한다.
그러면 아래와 같은 화면이 나오고, API Key가 나오게된다.
다음 화면에 다시 나오기 때문에 우선 API Key는 놔두고,
Generate configuration files를 클릭하여 안드로이드 프로젝트에 넣어야 하는 json 파일을 생성한다.
Download google-services.json 버튼을 클릭하여
google-services.json 파일을 다운 받는다.
그리고 아래에 적혀있는 Server API Key를 적어 놓는다.
(푸시를 전송할때 사용되는 서버 API 키)
안드로이드 스튜디오로 돌아와서 프로젝트의 app 폴더 아래 경로에 google-services.json파일을 이동시켜준다.
그다음으로 AndroidManifest.xml 파일 app 아래의 build.gradle 파일과 프로젝트(자신의 프로젝트)아래의 build.gradle파일을 수정해야 한다.
( https://developers.google.com/cloud-messaging/android/client?hl=ko )
위의 사이트에 설명이 되어 있으며, 버전이나 변경 사항에대한 확인은 필요하다.
첫 번째로 프로젝트 아래의 build.gradle 파일에 dependencies에 아래의 값을 넣어준다.
classpath 'com.google.gms:google-services:2.0.0-alpha6'
두 번째로 app 아래의 build.gradle 파일의 상단에 아래의 값을 넣어주고,
apply plugin: 'com.google.gms.google-services'
depencies에 아래의 값을 넣어준다.
compile "com.google.android.gms:play-services-gcm:8.3.0"
세 번째로 AndroidManifest.xml 파일에 아래의 내용을 넣고,
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="com.na.hosung.myweather.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.na.hosung.myweather.permission.C2D_MESSAGE" />
<application></application> 사이에 아래의 내용을 넣는다.
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.example.gcm" />
</intent-filter>
</receiver>
<service
android:name="com.na.hosung.myweather.MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name="com.na.hosung.myweather.MyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name="com.na.hosung.myweather.RegistrationIntentService"
android:exported="false"></service>
입력을 하고난 AndroidManifest.xml 파일의 모습은 아래와 같을 것이다.
빌드를 다시 하면 에러가 사라질 것이며,
MyGcmListenerService , MyInstanceIDListenerService , RegistrationIntentService
에서 에러가 나는 것은 파일이 없기 때문이다.
에러가 나는 파일들은
https://github.com/googlesamples/google-services/tree/master/android/gcm
위의 github에서 받을 수 있으며, 아래의 파일들을 넣어주면 에러가 사라지는 것을 알 수 있다.
위의 클래스들은 GCM 클라이언트 instance id를 얻는 클래스이며,
클래스 각가에 대한 설명은 생략한다.
위의 과정을 마치면, GCM을 전송 받기 위한 과정이 끝난다.
(GCM instance id를 알아내는 것과, 테스트해보는 방법은 다음에....)