92
DAY 10 GCM 을 활용하자 게시글 갱신을 동기화하기

[NEXT] GCM을 이용한 게시글 자동 갱신

Embed Size (px)

Citation preview

Page 1: [NEXT] GCM을 이용한 게시글 자동 갱신

DAY����������� ������������������  10����������� ������������������  

GCM����������� ������������������  을����������� ������������������  활용하자

게시글����������� ������������������  갱신을����������� ������������������  동기화하기

Page 2: [NEXT] GCM을 이용한 게시글 자동 갱신

게시글을����������� ������������������  갱신하기����������� ������������������  위해서����������� ������������������  현재상황은?

Page 3: [NEXT] GCM을 이용한 게시글 자동 갱신

Refresh����������� ������������������  Button을����������� ������������������  클릭해서.

Page 4: [NEXT] GCM을 이용한 게시글 자동 갱신

ServerAndroid����������� ������������������  Application

버튼클릭

JSON����������� ������������������  Data

Proxy().getJSON()

Refresh����������� ������������������  Button을����������� ������������������  클릭해서.

Page 5: [NEXT] GCM을 이용한 게시글 자동 갱신

Refresh����������� ������������������  Button을����������� ������������������  클릭해서.

혹은,����������� ������������������  Service를����������� ������������������  통해����������� ������������������  주기적으로����������� ������������������  갱신중

Page 6: [NEXT] GCM을 이용한 게시글 자동 갱신

혹은,����������� ������������������  Service를����������� ������������������  통해����������� ������������������  주기적으로����������� ������������������  갱신중

Server

JSON����������� ������������������  Data

Proxy().getJSON()Service

Page 7: [NEXT] GCM을 이용한 게시글 자동 갱신

이번����������� ������������������  수업����������� ������������������  에서는����������� ������������������  다른����������� ������������������  사용자가����������� ������������������  게시글을����������� ������������������  올렸을때����������� ������������������  ����������� ������������������  

GCM을����������� ������������������  활용해서����������� ������������������  자동으로����������� ������������������  게시글을����������� ������������������  갱신하도록����������� ������������������  만들겠습니다.

Page 8: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  (����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  )

Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  Service는����������� ������������������  서버로부터����������� ������������������  안드로이드����������� ������������������  어플리케이션에����������� ������������������  메세지를����������� ������������������  보내는����������� ������������������  것을����������� ������������������  도와주는����������� ������������������  

무료����������� ������������������  서비스이다.����������� ������������������  메세지는����������� ������������������  서버로부터����������� ������������������  안드로이드����������� ������������������  어플리케이션에게����������� ������������������  “새로운����������� ������������������  이메일����������� ������������������  알림”과����������� ������������������  같은����������� ������������������  통지����������� ������������������  정보를����������� ������������������  

전달할����������� ������������������  수����������� ������������������  있다.

Page 9: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  (����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  )

GCM����������� ������������������  구현체는����������� ������������������  GCM����������� ������������������  Connection����������� ������������������  Server,����������� ������������������  3rd-Party����������� ������������������  Server����������� ������������������  App,Client����������� ������������������  App����������� ������������������  으로����������� ������������������  구성되어있습니다.����������� ������������������  

이것들을����������� ������������������  GCM의����������� ������������������  Components����������� ������������������  라고����������� ������������������  불립니다.����������� ������������������  

Page 10: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  Components

GCM을����������� ������������������  사용가능한����������� ������������������  어플리케이션.����������� ������������������  2.2버전과����������� ������������������  Google����������� ������������������  Play����������� ������������������  Store가����������� ������������������  설치되어있어야����������� ������������������  

하고����������� ������������������  만약����������� ������������������  4.0.4버전보다����������� ������������������  낮다면����������� ������������������  적어도����������� ������������������  한번����������� ������������������  Google����������� ������������������  계정에����������� ������������������  로그인����������� ������������������  되어있어야����������� ������������������  한다.

GCM을����������� ������������������  구현한����������� ������������������  부분이����������� ������������������  작성된����������� ������������������  어플리케이션����������� ������������������  서버.����������� ������������������  3rd-party����������� ������������������  어플리케이션����������� ������������������  서버는����������� ������������������  

GCM����������� ������������������  Connection����������� ������������������  Server를����������� ������������������  통해����������� ������������������  안드로이드����������� ������������������  어플리케이션에게����������� ������������������  데이터를����������� ������������������  전송한다.����������� ������������������  

구글이����������� ������������������  제공한����������� ������������������  서버,����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server와����������� ������������������  메세지들을����������� ������������������  전달받을����������� ������������������  디바이스����������� ������������������  사이에서����������� ������������������  중계

하는����������� ������������������  역할

Client����������� ������������������  App����������� ������������������  

3rd-party����������� ������������������  Application����������� ������������������  Server����������� ������������������  ����������� ������������������  

GCM����������� ������������������  Connection����������� ������������������  Servers

GCM의����������� ������������������  기본적인����������� ������������������  역할을����������� ������������������  실행하는����������� ������������������  객체들

Page 11: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  Credentials

Sender����������� ������������������  ID프로젝트����������� ������������������  넘버.����������� ������������������  API����������� ������������������  console에서����������� ������������������  획득한다.����������� ������������������  Sender����������� ������������������  ID는����������� ������������������  3rd����������� ������������������  Party����������� ������������������  

Server에서����������� ������������������  메세지를����������� ������������������  보낼때����������� ������������������  사용하는����������� ������������������  아이디.

Application����������� ������������������  ID

메세지를����������� ������������������  받기위해서����������� ������������������  등록하는����������� ������������������  아이디이다.����������� ������������������  어플리케이션의����������� ������������������  패키지����������� ������������������  이

름에����������� ������������������  의해서����������� ������������������  확인한다.����������� ������������������  메세지가����������� ������������������  올바른����������� ������������������  안드로이드����������� ������������������  어플리케이션에����������� ������������������  ����������� ������������������  

타겟����������� ������������������  되는것을����������� ������������������  보증한다.����������� ������������������  

Registration����������� ������������������  ID

메세지를����������� ������������������  받는것이����������� ������������������  허가된����������� ������������������  안드로이드����������� ������������������  어플리케이션에게����������� ������������������  GCM����������� ������������������  

Connection����������� ������������������  Server가����������� ������������������  발행하는����������� ������������������  ID이다.����������� ������������������  사용자����������� ������������������  한명당����������� ������������������  한개씩����������� ������������������  부여가����������� ������������������  

된다.����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server에서는����������� ������������������  메세지를����������� ������������������  주어야����������� ������������������  하는����������� ������������������  디바이스를����������� ������������������  인식

하기����������� ������������������  위해서����������� ������������������  사용한다.

인증과����������� ������������������  올바른����������� ������������������  장소에����������� ������������������  메세지를����������� ������������������  보내기����������� ������������������  위한����������� ������������������  것

Page 12: [NEXT] GCM을 이용한 게시글 자동 갱신

이제,����������� ������������������  구현을����������� ������������������  시작해봅시다.

Page 13: [NEXT] GCM을 이용한 게시글 자동 갱신

순서

1. Google����������� ������������������  Console에서����������� ������������������  API����������� ������������������  프로젝트를����������� ������������������  생성한다.����������� ������������������  

2. Client����������� ������������������  Application을����������� ������������������  구현����������� ������������������  

3. Application����������� ������������������  Server를����������� ������������������  구현

Page 14: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  (����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  )

API����������� ������������������  Project를����������� ������������������  생성하면����������� ������������������  ����������� ������������������  

구글이����������� ������������������  이미����������� ������������������  만들어서����������� ������������������  제공하는����������� ������������������  GCM����������� ������������������  Connection����������� ������������������  Servers에����������� ������������������  ����������� ������������������  

3rd����������� ������������������  Party����������� ������������������  App����������� ������������������  Server(우리의����������� ������������������  서버)와����������� ������������������  Client����������� ������������������  App이����������� ������������������  접근할����������� ������������������  수����������� ������������������  있게����������� ������������������  됩니다.

Page 15: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

https://console.developers.google.com/project에����������� ������������������  접속한����������� ������������������  후����������� ������������������  Create����������� ������������������  Project를����������� ������������������  클릭한다

Page 16: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

New����������� ������������������  Project를����������� ������������������  만든다.

Page 17: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

Project의����������� ������������������  Dashboard로����������� ������������������  접속하면����������� ������������������  상위의����������� ������������������  Project����������� ������������������  Number를����������� ������������������  메모해둔다.����������� ������������������  

Page 18: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

다음으로,����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  for����������� ������������������  Android����������� ������������������  API를����������� ������������������  동작시켜야합니다.

Page 19: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

좌측의����������� ������������������  메뉴에서����������� ������������������  APIs&auth를����������� ������������������  클릭합니다.

Page 20: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

APIs����������� ������������������  메뉴를����������� ������������������  클릭한후에����������� ������������������  Browse����������� ������������������  APIs에����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  for����������� ������������������  Android를����������� ������������������  검색합니다

Page 21: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  for����������� ������������������  Android의����������� ������������������  STATUS를����������� ������������������  ON으로����������� ������������������  변경합니다.

Page 22: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

ON����������� ������������������  된것을����������� ������������������  확인!

Page 23: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

이제,����������� ������������������  3rd-Party����������� ������������������  App����������� ������������������  Server에서����������� ������������������  사용할����������� ������������������  Key를����������� ������������������  획득해야����������� ������������������  합니다.

Page 24: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

Credentials����������� ������������������  메뉴에����������� ������������������  접속한후����������� ������������������  Create����������� ������������������  new����������� ������������������  Key를����������� ������������������  클릭

Page 25: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

Server����������� ������������������  Key를����������� ������������������  클릭

Page 26: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

Server����������� ������������������  IP����������� ������������������  Address를����������� ������������������  입력합니다.����������� ������������������  ����������� ������������������  

GCM을����������� ������������������  테스트할����������� ������������������  경우����������� ������������������  0.0.0.0/0을����������� ������������������  입력합니다.

Page 27: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다.

API����������� ������������������  KEY����������� ������������������  획득!����������� ������������������  이것도����������� ������������������  저장해����������� ������������������  둡니다.

Page 28: [NEXT] GCM을 이용한 게시글 자동 갱신

API����������� ������������������  프로젝트를����������� ������������������  생성한다. 에서����������� ������������������  

우리는����������� ������������������  API����������� ������������������  프로젝트를����������� ������������������  생성한후����������� ������������������  Project����������� ������������������  Number를����������� ������������������  획득,����������� ������������������  

GCM����������� ������������������  API를����������� ������������������  가동,����������� ������������������  

Server����������� ������������������  API����������� ������������������  Key를����������� ������������������  획득했습니다.

Page 29: [NEXT] GCM을 이용한 게시글 자동 갱신

순서

1. Google����������� ������������������  Console에서����������� ������������������  API����������� ������������������  프로젝트를����������� ������������������  생성한다.����������� ������������������  

2. Client����������� ������������������  Application을����������� ������������������  구현����������� ������������������  

3. Application����������� ������������������  Server를����������� ������������������  구현

Page 30: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  (����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  )

3rd-Party����������� ������������������  Server가����������� ������������������  생성한����������� ������������������  메세지를����������� ������������������  ����������� ������������������  

GCM����������� ������������������  Connection����������� ������������������  Servers로부터����������� ������������������  전달받는����������� ������������������  Client����������� ������������������  App을����������� ������������������  작성하겠습니다.

Page 31: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

먼저����������� ������������������  Google����������� ������������������  Play����������� ������������������  Services����������� ������������������  SDK를����������� ������������������  셋팅하도록����������� ������������������  합니다.����������� ������������������  

Page 32: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

SDK����������� ������������������  폴더����������� ������������������  위치

<Android-SDK>/extras/google/google_play_services/libproject에����������� ������������������  

google-play-services_lib가����������� ������������������  존재하는지����������� ������������������  확인합니다.

혹시����������� ������������������  이����������� ������������������  디렉토리가����������� ������������������  없다면����������� ������������������  SDK����������� ������������������  Manager에서����������� ������������������  다운로드����������� ������������������  받도록합니다.

Page 33: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Eclipse의����������� ������������������  File-Import����������� ������������������  메뉴를����������� ������������������  클릭.����������� ������������������  Existing����������� ������������������  Android����������� ������������������  Code����������� ������������������  into����������� ������������������  Workspace를����������� ������������������  

클릭합니다.

Page 34: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

google-play-services_lib를����������� ������������������  찾은����������� ������������������  후����������� ������������������  Finish����������� ������������������  클릭����������� ������������������  

(현재����������� ������������������  workspace에����������� ������������������  copy하도록����������� ������������������  합니다)

Page 35: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

프로젝트는����������� ������������������  임포트����������� ������������������  했으니����������� ������������������  이제����������� ������������������  Nextgram����������� ������������������  프로젝트가����������� ������������������  참조할����������� ������������������  수����������� ������������������  있도록����������� ������������������  해봅시다.

Page 36: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Nextgram����������� ������������������  Project에����������� ������������������  우클릭을해서����������� ������������������  Properties를����������� ������������������  클릭

Page 37: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

좌측의����������� ������������������  Android메뉴를����������� ������������������  클릭한����������� ������������������  후����������� ������������������  Add..����������� ������������������  클릭

Page 38: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

google-play-services_lib를����������� ������������������  찾은����������� ������������������  후����������� ������������������  OK����������� ������������������  클릭!

Page 39: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

추가된것을����������� ������������������  확인합니다.

Page 40: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Android����������� ������������������  Studio����������� ������������������  에서는����������� ������������������  이전의����������� ������������������  작업들을����������� ������������������  하기위해����������� ������������������  dependencies에����������� ������������������  ����������� ������������������  

complie����������� ������������������  ‘com.google.android.gms:play-services:5.+’����������� ������������������  를����������� ������������������  추가해����������� ������������������  주시면����������� ������������������  됩니다.

build.gradle

Page 41: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

프로젝트에����������� ������������������  의존성을����������� ������������������  추가해����������� ������������������  줍니다.����������� ������������������  ����������� ������������������  

application����������� ������������������  태그����������� ������������������  아래에����������� ������������������  작성해����������� ������������������  주시면����������� ������������������  됩니다.

AndroidManifest.xml

방금작업을해두면����������� ������������������  GCM뿐만아니라����������� ������������������  다른����������� ������������������  Google����������� ������������������  Play����������� ������������������  services����������� ������������������  APIs를����������� ������������������  사용할수있습니다.

Page 42: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Google����������� ������������������  SDK를����������� ������������������  셋팅했으니����������� ������������������  본격적으로����������� ������������������  Client����������� ������������������  Code를����������� ������������������  작성해봅시다.

Page 43: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

필요한����������� ������������������  권한을����������� ������������������  추가합니다.

AndroidManifest.xml

Page 44: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Application����������� ������������������  태그����������� ������������������  아래에����������� ������������������  GcmBroadcastReceiver를����������� ������������������  등록합니다.����������� ������������������  

AndroidManifest.xml

Page 45: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

권한을����������� ������������������  설정했으니,����������� ������������������  ����������� ������������������  현재����������� ������������������  어플리케이션이����������� ������������������  Google����������� ������������������  Play����������� ������������������  Services����������� ������������������  API를����������� ������������������  ����������� ������������������  

사용할����������� ������������������  수����������� ������������������  있는지����������� ������������������  확인하겠습니다.

Page 46: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

checkGooglePlayServices라는����������� ������������������  메서드를����������� ������������������  작성합니다.����������� ������������������  

이����������� ������������������  메서드는����������� ������������������  play����������� ������������������  service의����������� ������������������  지원����������� ������������������  여부에����������� ������������������  따라����������� ������������������  false,����������� ������������������  true값을����������� ������������������  반환합니다.

HomeView.java

Page 47: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

조건문을����������� ������������������  작성하여����������� ������������������  GooglePlayService를����������� ������������������  사용할����������� ������������������  수����������� ������������������  있을때의����������� ������������������  코드를����������� ������������������  작성합니다.

HomeView.java

Page 48: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

이제����������� ������������������  GCM을����������� ������������������  사용하기����������� ������������������  위한����������� ������������������  인증을����������� ������������������  할것입니다.����������� ������������������  

Page 49: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

필요한����������� ������������������  변수들을����������� ������������������  미리����������� ������������������  설정해����������� ������������������  둡니다.

HomeView.java

[Project����������� ������������������  Number]

Page 50: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

pref와����������� ������������������  context����������� ������������������  변수에����������� ������������������  인스턴스를����������� ������������������  할당합니다.

HomeView.java

Page 51: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

gcm����������� ������������������  객체에����������� ������������������  인스턴스를����������� ������������������  구한후����������� ������������������  Client를����������� ������������������  위한����������� ������������������  RegistrationId를����������� ������������������  가져옵니다.����������� ������������������  

만약에����������� ������������������  없다면����������� ������������������  GCM����������� ������������������  Connection����������� ������������������  Server에����������� ������������������  요청해����������� ������������������  RegistrationId를����������� ������������������  가져옵니다.

HomeView.java

Page 52: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

getRegistrationId()와����������� ������������������  registerInBackground()����������� ������������������  를����������� ������������������  구현해����������� ������������������  봅시다.

HomeView.java

Page 53: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

getRegistrationId()는����������� ������������������  Sharef����������� ������������������  Preferences에����������� ������������������  저장된����������� ������������������  ����������� ������������������  

registration����������� ������������������  ID를����������� ������������������  가져오는����������� ������������������  메서드입니다.����������� ������������������  없을경우����������� ������������������  “”을����������� ������������������  반환합니다.

HomeView.java

Page 54: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

registerInBackground()는����������� ������������������  Google����������� ������������������  Connection����������� ������������������  Server로부터����������� ������������������  ����������� ������������������  

registration����������� ������������������  ID를����������� ������������������  획득하는����������� ������������������  메서드입니다.����������� ������������������  

AsyncTask를����������� ������������������  활용해����������� ������������������  구현하겠습니다.

HomeView.java

Page 55: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GoogleCloudMessaging객체의����������� ������������������  register(SENDER_ID)����������� ������������������  함수를����������� ������������������  통해����������� ������������������  ����������� ������������������  

값을����������� ������������������  가져올����������� ������������������  수����������� ������������������  있습니다.����������� ������������������  ����������� ������������������  

값을����������� ������������������  가져오면����������� ������������������  storeRegistrationId()����������� ������������������  메서드를����������� ������������������  통해����������� ������������������  ID값을����������� ������������������  저장하도록����������� ������������������  합니다.

HomeView.java

Page 56: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

storeRegistrationId()를����������� ������������������  구현해봅시다.

HomeView.java

Page 57: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

regid를����������� ������������������  받아����������� ������������������  SharedPreferences����������� ������������������  에����������� ������������������  저장하는����������� ������������������  단순한����������� ������������������  메서드입니다.

HomeView.java

Page 58: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

Registration����������� ������������������  ID를����������� ������������������  획득했으니����������� ������������������  

어플리케이션이����������� ������������������  GCM을����������� ������������������  활용하기����������� ������������������  위한����������� ������������������  준비작업은����������� ������������������  완료했습니다.����������� ������������������  

다음은����������� ������������������  Server에서����������� ������������������  메세지가����������� ������������������  전달되었을때����������� ������������������  그것을����������� ������������������  처리하는����������� ������������������  로직을����������� ������������������  ����������� ������������������  

만들도록����������� ������������������  하겠습니다.

Page 59: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmBroadcastReceiver����������� ������������������  클래스를����������� ������������������  작성하도록합니다.����������� ������������������  

이����������� ������������������  클래스는����������� ������������������  메세지가����������� ������������������  도착했을때����������� ������������������  사용자의����������� ������������������  어플리케이션을����������� ������������������  깨우고����������� ������������������  

GcmIntentService를����������� ������������������  실행시키는����������� ������������������  역할을����������� ������������������  합니다.

GcmBroadcastReceiver.java

Page 60: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmBroadcastReceiver.java

GcmIntentService를����������� ������������������  작성하도록����������� ������������������  하겠습니다.

Page 61: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService����������� ������������������  클래스를����������� ������������������  생성한����������� ������������������  후����������� ������������������  

필요한����������� ������������������  변수를����������� ������������������  설정하고����������� ������������������  생성자를����������� ������������������  작성합니다.

GcmIntentService.java

Page 62: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

onHandleIntent()를����������� ������������������  Override합니다.����������� ������������������  

extras����������� ������������������  정보에서����������� ������������������  messageType을����������� ������������������  추출합니다.

GcmIntentService.java

Page 63: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

TYPE이����������� ������������������  SEND_ERROR,����������� ������������������  DELETED,����������� ������������������  MESSAGE����������� ������������������  일때����������� ������������������  처리하도록����������� ������������������  로직을����������� ������������������  분리합니다.

GcmIntentService.java

Page 64: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

MESSAGE����������� ������������������  타입일때����������� ������������������  게시글����������� ������������������  데이터를����������� ������������������  갱신하고����������� ������������������  

사용자의����������� ������������������  어플리케이션에����������� ������������������  Notification을����������� ������������������  보냅니다.

GcmIntentService.java

Page 65: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService.java

sendNotification����������� ������������������  메서드를����������� ������������������  작성하도록����������� ������������������  하겠습니다.

Page 66: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService.java

NotificationManager����������� ������������������  객체를����������� ������������������  초기화합니다.

Page 67: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService.java

PendingIntent를����������� ������������������  작성해����������� ������������������  “알림”을����������� ������������������  클릭했을때����������� ������������������  HomeView.class가����������� ������������������  열리도록����������� ������������������  합니다.

Page 68: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService.java

NotificationCompat.Builder����������� ������������������  객체를����������� ������������������  활용해����������� ������������������  알림에����������� ������������������  표현될����������� ������������������  

Icon,����������� ������������������  Title,����������� ������������������  Style,����������� ������������������  Text,����������� ������������������  ContextText를����������� ������������������  구성합니다.

Page 69: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

GcmIntentService.java

마지막으로����������� ������������������  PendingIntent를����������� ������������������  설정하고����������� ������������������  ����������� ������������������  

NotificationManager.notify()를����������� ������������������  통해����������� ������������������  Notification을����������� ������������������  보냅니다.

Page 70: [NEXT] GCM을 이용한 게시글 자동 갱신

Client����������� ������������������  Application을����������� ������������������  구현

이로써,����������� ������������������  Client����������� ������������������  Application을����������� ������������������  모두����������� ������������������  구현했습니다.����������� ������������������  

Client는����������� ������������������  Google����������� ������������������  Play����������� ������������������  Services����������� ������������������  SDK를����������� ������������������  셋팅했고����������� ������������������  

Client가����������� ������������������  사용가능한����������� ������������������  상태인지����������� ������������������  확인할����������� ������������������  수����������� ������������������  있으며,����������� ������������������  ����������� ������������������  

GCM과����������� ������������������  관련한����������� ������������������  인증을����������� ������������������  했습니다.����������� ������������������  

또한,����������� ������������������  메세지가����������� ������������������  도착했을때����������� ������������������  게시글을����������� ������������������  재갱신하고����������� ������������������  ����������� ������������������  

사용자에게����������� ������������������  알림(Notification)을����������� ������������������  표시할����������� ������������������  수����������� ������������������  있습니다.����������� ������������������  

다음으로����������� ������������������  메세지를����������� ������������������  보내는����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server를����������� ������������������  구현해����������� ������������������  보겠습니다.

Page 71: [NEXT] GCM을 이용한 게시글 자동 갱신

순서

1. Google����������� ������������������  Console에서����������� ������������������  API����������� ������������������  프로젝트를����������� ������������������  생성한다.����������� ������������������  

2. Client����������� ������������������  Application을����������� ������������������  구현����������� ������������������  

3. Application����������� ������������������  Server를����������� ������������������  구현

Page 72: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  (����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  )

Client����������� ������������������  App에게����������� ������������������  전달할����������� ������������������  메세지를����������� ������������������  

GCM����������� ������������������  Connection����������� ������������������  Server에게����������� ������������������  전달하는����������� ������������������  

3rd-Party����������� ������������������  Server를����������� ������������������  구현해����������� ������������������  보겠습니다.

Page 73: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

Server는����������� ������������������  파이썬을����������� ������������������  통해����������� ������������������  간단히����������� ������������������  구현하겠습니다.����������� ������������������  

python����������� ������������������  2.x����������� ������������������  버전이����������� ������������������  설치되어있는����������� ������������������  환경입니다.

Page 74: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

https://github.com/geeknam/python-gcm

터미널에서����������� ������������������  GCM에����������� ������������������  필요한����������� ������������������  라이브러리를����������� ������������������  설치하는����������� ������������������  명령을����������� ������������������  입력합니다.����������� ������������������  ����������� ������������������  

pip����������� ������������������  install����������� ������������������  python-gcm

Page 75: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

Python을����������� ������������������  실행시키고����������� ������������������  from����������� ������������������  gcm����������� ������������������  import����������� ������������������  GCM����������� ������������������  이����������� ������������������  

정상적으로����������� ������������������  작동하는지����������� ������������������  확인합니다.

Page 76: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

API_KEY����������� ������������������  =����������� ������������������  ‘Project����������� ������������������  Number’

Page 77: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

json����������� ������������������  형태로����������� ������������������  data를����������� ������������������  구성합니다.

Page 78: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

gcm����������� ������������������  =����������� ������������������  GCM(API_KEY)

Page 79: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

reg_id����������� ������������������  =����������� ������������������  ‘Application에서����������� ������������������  얻은����������� ������������������  Registration����������� ������������������  ID’

실제로는����������� ������������������  storeRegistrationId를����������� ������������������  할때����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server로����������� ������������������  Registration����������� ������������������  ID를����������� ������������������  전송합니다

Page 80: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

gcm.plaintext_request(registration_id=reg_id,����������� ������������������  data=data)

Page 81: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

위에����������� ������������������  알람이����������� ������������������  뜨는����������� ������������������  것을����������� ������������������  확인할����������� ������������������  수����������� ������������������  있습니다.

실제����������� ������������������  디바이스

Page 82: [NEXT] GCM을 이용한 게시글 자동 갱신

Application����������� ������������������  Server를����������� ������������������  구현

영상

Geny����������� ������������������  Motion

Page 83: [NEXT] GCM을 이용한 게시글 자동 갱신

section����������� ������������������  6

GCM을����������� ������������������  활용하자게시글����������� ������������������  갱신을����������� ������������������  동기화하기

마무리

Page 84: [NEXT] GCM을 이용한 게시글 자동 갱신

ServerAndroid����������� ������������������  Application

버튼클릭

JSON����������� ������������������  Data

Proxy().getJSON()

Refresh����������� ������������������  Button을����������� ������������������  클릭해서����������� ������������������  게시글을����������� ������������������  갱신하는것은

최신글을����������� ������������������  유지할����������� ������������������  수����������� ������������������  없습니다.

Page 85: [NEXT] GCM을 이용한 게시글 자동 갱신

혹은,����������� ������������������  Service를����������� ������������������  통해����������� ������������������  주기적으로����������� ������������������  갱신하는것은

Server

JSON����������� ������������������  Data

Proxy().getJSON()Service

항상����������� ������������������  최신글이라고����������� ������������������  보장할����������� ������������������  수����������� ������������������  없습니다.

Page 86: [NEXT] GCM을 이용한 게시글 자동 갱신

하지만����������� ������������������  GCM을����������� ������������������  활용한다면?

Page 87: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM을����������� ������������������  사용한다면

GCM����������� ������������������  Server게시글����������� ������������������  작성

게시글이����������� ������������������  작성됬네?

게시글이����������� ������������������  작성����������� ������������������  되었을때����������� ������������������  GCM����������� ������������������  Server에게����������� ������������������  알려*GCM����������� ������������������  Server는����������� ������������������  GCM����������� ������������������  Connection����������� ������������������  Server가����������� ������������������  아닌����������� ������������������  GCM을����������� ������������������  구현한����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server입니다.

Page 88: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM을����������� ������������������  사용한다면

Server

JSON����������� ������������������  Data

Proxy().getJSON()

GCM����������� ������������������  Server게시글����������� ������������������  작성

등록된����������� ������������������  기계들아����������� ������������������  ����������� ������������������  데이터를����������� ������������������  요청해!

각����������� ������������������  디바이스들에게����������� ������������������  ����������� ������������������  게시글����������� ������������������  재갱신을����������� ������������������  요청할����������� ������������������  수����������� ������������������  있습니다.

Page 89: [NEXT] GCM을 이용한 게시글 자동 갱신

Server

JSON����������� ������������������  Data

Proxy().getJSON()

GCM����������� ������������������  Server게시글����������� ������������������  작성

등록된����������� ������������������  기계들아����������� ������������������  ����������� ������������������  데이터를����������� ������������������  요청해!

게시글이����������� ������������������  작성될때����������� ������������������  다른����������� ������������������  디바이스에게����������� ������������������  재갱신을����������� ������������������  요청하므로����������� ������������������  ����������� ������������������  

Refresh,����������� ������������������  Service를����������� ������������������  활용한����������� ������������������  방법에����������� ������������������  비해����������� ������������������  가장����������� ������������������  최신����������� ������������������  데이터임을����������� ������������������  보장할����������� ������������������  수����������� ������������������  있습니다.

GCM을����������� ������������������  사용한다면

Page 90: [NEXT] GCM을 이용한 게시글 자동 갱신

추가사항

GCM����������� ������������������  Server게시글����������� ������������������  작성

게시글이����������� ������������������  작성됬네?

이����������� ������������������  부분을����������� ������������������  실제로����������� ������������������  작성하진����������� ������������������  않았지만,����������� ������������������  게시글을����������� ������������������  작성했을때����������� ������������������  ����������� ������������������  

gcm.plaintext_request()를����������� ������������������  사용하는����������� ������������������  것과����������� ������������������  같은����������� ������������������  로직을����������� ������������������  추가해����������� ������������������  

준다면����������� ������������������  위의����������� ������������������  부분을����������� ������������������  만족할����������� ������������������  수����������� ������������������  있습니다.

Page 91: [NEXT] GCM을 이용한 게시글 자동 갱신

GCM����������� ������������������  Server게시글����������� ������������������  작성

등록된����������� ������������������  기계들아����������� ������������������  ����������� ������������������  데이터를����������� ������������������  요청해!

어떤����������� ������������������  디바이스에게����������� ������������������  전달해야하는지는����������� ������������������  Registration����������� ������������������  ID를����������� ������������������  통해����������� ������������������  인식할����������� ������������������  수����������� ������������������  있습니다.����������� ������������������  ����������� ������������������  

이번����������� ������������������  예제에서는����������� ������������������  안드로이드����������� ������������������  로그에서����������� ������������������  직접����������� ������������������  추출해서����������� ������������������  사용했지만����������� ������������������  

실제����������� ������������������  GCM을����������� ������������������  서비스에����������� ������������������  적용하기����������� ������������������  위해선����������� ������������������  클라이언트에서����������� ������������������  Reg����������� ������������������  ID를����������� ������������������  획득할때����������� ������������������  ����������� ������������������  

GCM����������� ������������������  Server로����������� ������������������  ID를����������� ������������������  전송하는����������� ������������������  로직을����������� ������������������  추가해야����������� ������������������  할����������� ������������������  것입니다.

*GCM����������� ������������������  Server는����������� ������������������  GCM����������� ������������������  Connection����������� ������������������  Server가����������� ������������������  아닌����������� ������������������  GCM을����������� ������������������  구현한����������� ������������������  3rd����������� ������������������  Party����������� ������������������  Server입니다.

추가사항

Page 92: [NEXT] GCM을 이용한 게시글 자동 갱신

감사합니다.