반응형


Google Cloud Messaging: Overview

https://developers.google.com/cloud-messaging/gcm 

 GCM은 개발자로하여금 서버와 클라이언트 사이에서 메시지를 보낼 수 있게 해주는 무료서비스입니다. GCM은 서버에서 앱으로 메시지들을 다운스트림을 할 수 있고 앱에서 서버로 업스트림도 할 수 있습니다.
 예를들어, 하나의 가벼운 다운스트림 메시지는 클라이언트 앱에 통지할 수 있고 새로운 데이터는 서버로부터 가져갈 수 있게 됩니다, 새로운 이메일 알림처럼 말이죠. 즉각적인 메시지처리와 같은 경우에, GCM 메시지는 앱으로 4kb 까지 전달할 수 있습니다. GCM서비스는 메시지들을 큐로 처리하는 모든 것을 다룰 수 있고 클라이언트 앱으로 전달하거나 받을 수 있습니다.(GCM 서비스가 큐형태로 운영된다.)


Architectual Overview

 하나의 GCM 구현은 한개의 구글 연결 서버를 포함하는데, 여러분의 환경에서 한 앱서버는 HTTP 또는 XMPP 프로토콜로 구글연결서버와 상호통신을 하며, 이는 클라이언트 앱과도 마찬가지이다.
<Figure1. GCM Architecure> AppServer <—> GCM Connection Server <—> ClientApp

아래에 어떻게 GCM을 구성하는 컴포넌트들이 상호작용하는지를  보여준다.
  • 구글 GCM Connection Server는 여러분의 앱서버로부터 메시지를 다운스트림하고 그것을 클라이언트 앱으로 전달한다. XMPP 연결서버는 클라이언트 앱으로부터의 메시지를 업스트림 할 수 있게 하여 그것을 여러분의 앱서버로 전달할 수 있게 한다. 더 많은 정보는 About GCM Connection Server.(https://developers.google.com/cloud-messaging/server)
  • 여러분의 앱서버에서, GCM Connection Server 와 통신하기 위해 HTTP 나 XMPP 프로토콜로 구현해야 하다. AppServer는 GCM Connection Server 로 다운스트림 메시지들을 보낸다.; GCM Connection Server는 메시지들을 큐에 넣고 저장한 다음에 그것을 클라이언트 앱으로 보낸다. 만약에 XMPP를 구현해야 한다면, AppServer는 클라이언트 앱으로부터 메시지들을 받을 수 있을 것이다.
  • ClientApp은 GCM을 할 수 있는 클라이언트 앱이다(일 것이다). GCM 메시지들을 받고 보내기 위해서, 앱은 GCM 에 등록되어야만하고 'registration token' 이라고 불리는 유일한 식별자를 가져야만 한다. 어떻게 클라이언트 앱을 구현하는지에 대해 더 많은 정보를 얻으려면, 플랫폼에 대한 문서를 보세요.



Key Concepts
다음의 표는 GCM과 관련된 핵심용어들과 개념들을 요약한 것이다. 이것은 다음의 카테고리들로 나누어진다.
  • Components - GCM에서 주요한 역할을 하는 요소들이다.
  • Credentials - GCM에서 사용되는 IDs 와 tokens 이 모든 위치에서 인증받을 수 있게 하고, 메시지들이 정확한 장소로 갈 수 있게 만들어 준다.

Table 1. GCM components and credentials.

Components

GCM Connection Server
구글 서버들로 AppServer 와 ClientApp 사이에서 메시지를 보내데 관련되어 있다.
Client App
GCM을 할 수 있는 클라이언트 앱으로 여러분의 AppServer와 통신할 수 있다.
App Server
AppServer로 GCM을 구현하는 한 부분으로서 여러분이 만든다. AppServer는 GCM Connection Server를 통해서 클라이언트 랩으로 데이터를 보낸다. 만약에 앱서버가 XMPP프로토콜을 구현했다면, 앱서버도 클라이언트 앱으로부터 업스트림으로 보내진 메시지들을 받을 수 있다.

Credentials

Sender ID
유일한 숫자로된 값이 API 프로젝트를 구성할 때 생성된다.(Google Developer Console 에서 “Project Number”로 주어진다.) Sender ID는 앱서버를 식별하기 위한 등록절차에서 사용되어지는데 허가를 받으면 클라이언트 앱으로 메시지들을 보낼 수 있다.
API Key
API 키는 AppServer에 저장되며 AppServer가 구글 서비스로 접근하는 권한을 가지게 한다. HTTP 를 사용할 때, API 키는  보내는 메시지의 POST요청헤더에 포함되어 진다. XMPP 를 사용할 때,  API 키는 SASL PLAIN 인증요청에서 연결을 인증하기 위한 패스워드로 사용된다. 
Application ID
Client App은 메시지를 수신하려면 등록되어야한다. 어떻게 구현되는지는 플랫폼에 의존적이다.
  • Android : app manifest 의 패키지이름을 사용한다.
  • iOS : App 의 번들 식별자를 사용한다.
  • Chrome : 크롬 확장 이름을 사용한다.
Registration Token
하나의 ID가 GCM Connection Server에 의해서 client app 으로 발급되는데 앱이 메시지를 받을 수 있도록 한다. 등록된 토큰은 보안을 유지해야 합니다.



Lifecycle Flow

  • GCM을 사용할 수 있게 등록한다. 클라이언트 앱의 한 인스턴스는 메시지들을 받으려면 등록해야 합니다. 좀 더 많은 논의를 보려면 다음의 문서를 보세요.https://developers.google.com/cloud-messaging/registration
  • 다운스트림 메시지들을 보내고 받는다.
    • 메지시 보내기. 앱서버는 클라이언트앱으로 메시지를 보낸다.
      1. 앱서버가 GCM connection server 로 메시지를 보낸다.
      2. GCM connection server 는 만약에 단말기가 오프라인이면 메시지를 큐에 넣고 저장한다.
      3. 단말기가 온라인일 때, GCM connection server 는 단말기로 메시지를 보낸다.
      4. 단말기에서 클라이이언트 앱은 플랫폼의 특별한 구현에 따라서 메시지를 받는다. 
    • 메시지 받기. 클라이언트 앱은 GCM connection server 로부터 메시지를 받는다. 어떻게 클라이언트 앱이 각자의 환경에서 앱이 받은 메시지들을 처리하는 것과 같은 자세한 내용에 대해서는 특정 플랫폼 문서를 확인하세요.
  • 업스트림 메시지들을 보내고 받는다. 이 기능은 XMPP Connection Server 를 사용할 때만 이용할 수 있다.
    • 메시지 보내기. 클라이언트 앱은 앱서버로 메시지들을 보낼 수 있다.
      1. 단말기에서 클라이언트 앱은 XMPP Connection server 로 메시지들을 보낼 수 있다. 어떻게 클라이언트 앱이 XMPP 를 통해서 메시지를 보내는지를 자세히 알려면 여러분 플랫폼의 특별한 문서를 보세요.
      2. XMPP Connection Server 는 서버가 연결되어 있지 않을 때 메시지를 큐에 넣고 저장한다.
      3. 앱서버가 다시 연결되었을 때, XMPP Connection server는 메시지를 앱서버로 전달한다.
    • 메시지 받기. 앱서버는 XMPP Connection Server로부터 메시지를 받은 다음에 다음 내용을 수행한다.
      1. 클라이언트 앱 발송정보를 확인하기 위해 메시지 헤더를 분석한다.
      2. 받은 메시지를 알려주기 위해서 XMPP Connection Server 로 “ack”를 보낸다.
      3. 추가적으로 메시지 페이로드를 분석한다, 클라이언트 앱에 정의된대로~

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates.


반응형

+ Recent posts