언어&플랫폼/Android 2015. 6. 18. 17:05



IDE : android studio


샘플 코드 주소git clone https://github.com/googlesamples/google-services.git


사용 코드google-services/android/gcm


프로젝트 import : 외부 프로젝트 import 로 실행



과정 참고 : https://developers.google.com/cloud-messaging/android/start

위 싸이트의 설명에 기반한 샘플코드



 https://developers.google.com/cloud-messaging/android/start 에서 설정 파일 받기




위에서 다운받은 google-services.json 파일을 내 프로젝트의 app/ 폴더로 옮긴다.


위에 적힌 Server API key 값을 

GcmSender.java 31 째 줄에 있는 API_KEY에 기입한다.





PUSH 테스트

환경변수에 JAVA_HOME 설정 ( 내컴퓨터 ->속성 -> 설정변경 -> 고급 _> 환경변수)

각자 Jdk가 깔려있는 폴더를 적어두자(java.exe, javaw.exe 같은 파일이 있는 폴더)

위 설정을 하지 않으면 샘플 push 프로그램이 동작하지 않는다.


브로드캐스트 push

1. cmd.exe 를 실행

2. 소스가 깔려있는 곳으로 이동

$ cd {소스폴더경로}\gcm

$ gradlew.bat run -Pargs="푸쉬 할 메시지"

위와 같이 하면 내 어플리케이션이 설치된 모든 앱들에 "What!!!! the"란 문구의 노티피케이션이 뜬다.



유니캐스트 push

유니캐스트 push를 하려면 내 폰이 발급받은 registration id를 알아야 한다.

RegistrationIntentService 클래스에서 57 line에 
Log.i(TAG, "GCM Registration Token: " + token);

이 있다. 이값이 내폰의 레지스트 아이디 값인데 logcat에서 "RegIntentService"로 필터를 해서 키값을 기억하고 있자.


$ gradlew.bat run -Pargs="푸쉬 할 메시지, {레지스트 아이디}"

를 실행하면 특정 폰에만 push가 가게 된다.


위의 registration id를 자신의 서버에 저장해두어 관리해야 나중에 push를 자유롭게 할 수 있겠다.





GcmSender

push 형태를 보면

https://android.googleapis.com/gcm/send 주소에

request 에 서버키를 설정한후

{message:{내매세지}, to:{특정 폰의 레지스트 아이디}} 형태의 json Data를 write 하는 것을 볼 수 있다.


posted by cozyboy
: