본문 바로가기
개발/안드로이드

GCM 푸시서버 구현하기(node.js & android)

by darksilber 2016. 4. 5.
반응형

출처 - https://newgenerationkorea.wordpress.com/2015/08/05/gcm-%ED%91%B8%EC%8B%9C%EC%84%9C%EB%B2%84-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0node-js-android-client/

 

프로젝트생성

먼저 http://console.developers.google.com/project 여기로 들어가서 프로젝트 하나를 만든다.

gcm-2

https://developers.google.com/mobile/add  여기로 들어가서 GCM사용을 위한 설정을 한다.

gcm-003gcm-004

gcm-005

Server API Key 및 Sender ID는 GCM을 이용하기위해 필요하므로 저장해둔다.

(google-services.json 파일을 다운로드하여 프로젝트안에 저장한다   –  생략해도됨)


Android – Client

2개의 build.gradle 파일에 형광색으로 표시된 부분을 추가한다.

gcm-plugin gcm-classpath
apply plugin: 'com.google.gms.google-services'
compile "com.google.android.gms:play-services:7.5.+"
classpath 'com.google.gms:google-services:1.3.0-beta1'

manifest에 permission, receiver, service를 등록한다.

gcm-permission gcm-service

receiver 는 만들 필요 없고  MyGcmListenerService 와 MyInstanceIDListenerService를 만들고

onMessgeReceived(String,Bundle) 함수와 onTokenRefresh()함수를 오버라이드 한다.

gcm-listener

gcm-tokenservice

onMessageReceived method는 메시지가 전달 되었을때 호출되는 함수이고

onTokenRefresh method는 token은 나의 주소 정도로 생각하면되는데 이 token을 서버에 저장을 해두고 server는

gcm server에 token을 같이 보냄으로서 해당 앱에 푸쉬할 수있게 된다. token 은 변할 수 있는데 이 때 server에 저장되어있는

token 정보도 변경되어야지 제대로된 푸쉬를 할 수 있다.

gcm-token

token 정보는 위 처럼 구할 수 있는데 R.string.gcm_defaultSenderId부분은 google-service.json 파일을 다운로드 하지 않은

경우 위에서 구한 Sender_ID로 바꿔주면 된다.


Node.js – Server

gcm-server

server_api_key 는 아까 gcm 설정하면서 얻었던 Server API Key이다.

gcm.Message 객체를 생성하고 각 옵션들을 설정한 후 data에는 전송할 data를 쓰면된다.

Server에서 Client로 푸시를 보낼때 Token이 필요한데 이는 위에서 언급했듯이 Client에서 구해서 Server에 저장해야한다.

registrationIds 여기에 아래처럼 Token들을 넣어 전송하면 된다.

registrationIds.push("Token);
registrationIds.push("Token);
  • GCM은 한번에 1000개의 Token들에게 메시지를 보낼 수있다.

요약

프로젝트 생성후 gcm 을 이용하기위해 server api key 와 sender id를 얻는다.

gradle에 library를 추가하고 classpath 설정 및 plugin을 적용한다.

permission, receiver, service 를 등록하고 service는 구현한다.

token 정보를 구하고 이를 server에 저장한다.

server에서는 sender 객체를 생성하고 token 및 data 정보를 gcm server로 전송한다.

반응형

댓글