Google Cloud Messasing (GCM) 은 개발자가 서버와 클라이언트 앱 간에 메시지를 보낼 수 있는 무료 서비스입니다. 서버에서 클라이언트 응용프로그램까지의 다운스트림 메시지와 클라이언트 응용프로그램에서 서버로의 업스트림 메시지가 포함됩니다.
예를 들어, 경량 다운스트림 메시지는 클라이언트 응용프로그램에 "새 전자 메일" 알림의 경우 처럼 서버에서 새 데이터가 있음을 알릴 수 있습니다.
인스턴스 메시징과 같은 사용 사례의 경우 GCM 메시지는 최대 4KB의 페이로드
를 클라이언트 앱에 전송할 수 있습니다.
Architectural Overview
GCM 구현에는 Google 연결 서버, HTTP 또는 XMPP 프로토콜을 통해 연결 서버와 상호 작용하는 사용자 환경의 앱 서버 및 클라이언트 앱이 포함됩니다.
- Google
GCM Connection Servers
는 앱 서버의 다운 스트림 메시지를 수락하고 클라이언트 앱으로 전송합니다. XMPP 연결 서버는 클라이언트 응용 프로그램의 업스트림으로 보낸 메시지를 받아 들여 응용프로그램 서버로 전달할 수도 있습니다. - App Server에서 HTTP 및/또는 XMPP 프로토콜을 구현하여 GCM 연결 서버와 통신합니다. 앱 서버는 다운 스트림 메시지를 GCM 연결 서버로 보냅니다. 연결 서버는 메시지를 대기열에 넣고 저장 한 다음 클라이언트 응용프로그램으로 보냅니다. XMPP를 구현하면 앱 서버는 클라이언트 응용프로그램에서 보낸 메시지를 받을 수 있습니다.
- 클라리언트 앱은 GCM을 지원하는 클라이언트 앱입니다. GCM 메시지를 보내고 받으려면 앱이 GCM에 등록하고 등록 토큰이라는 고유 식별자를 가져야합니다.
주요 개념
이 표에는 GCM과 관련된 주요 용어 및 개념이 요약되어 있습니다.
- Components - GCM에서 주요 역할을 수행하는 엔티티.
- Credentials - 모든 당사자가 인증되었고 메시지가 올바른 위치로 전송되는지 확인하기 위해 GCM에 사용되는 ID와 토큰.
Components | |
---|---|
GCM Connection Servers |
앱 서버와 클라이언트 앱 간에 메시지를 보내는 데 관련된 Google 서버 |
Client App | 서버 앱과 통신하는 GCM 지원 클라리언트 앱입니다. |
App Server | GCM 구현의 일부로 작성하는 앱 서버입니다. 앱 서버는 GCM connection Server를 통해 클라이언트 앱에 데이터를 전송합니다. 앱 서버가 XMPP 프로토콜을 구현하면 클라이언트 앱에서 업스트림으로 전송된 메시지를 수신할 수도 있습니다. |
Credentials | |
---|---|
Sender ID | API 프로젝트를 설정할 때 생성되는 고유한 숫자 값입니다. Sender ID는 등록 프로세스에서 클라이언트 앱에 메시지를 보내는 것이 허용된 앱 서버를 식별하는데 사용됩니다. |
Server Key | Google 서비스에 대한 액세스 권한이 부여된 앱 서버에 저장된 키입니다. HTTP에서 서버 키는 메시지를 보내는 POST 요청의 헤더에 포함됩니다. XMPP에서 서버 키는 SASL PLAIN 인증 요청에서 암호를 사용하여 연결을 인증합니다. 클라이언트 코드에 서버 키를 포함하면 안됩니다. |
Application ID | 메시지를 수신하도록 등록하는 클라이언트 앱입니다. - Android: 앱 매니페스트의 패키지 이름을 사용합니다. - iOS: 앱의 번들 식별자(bundle identifier)를 사용합니다. - Chrome: 확장 프로그램 이름을 사용합니다. |
Registration Token | GCM 연결 서버가 클라이언트 앱에 발행하여 메시지를 수신할 수 있게 하는 ID입니다. 등록 토큰은 비밀로 유지해야합니다. |
Lifecycle Flow
1. GCM을 사용하기 위해 등록합니다.
- 클라이언트 응용프로그램의 인스턴스가 메시지를 수신하도록 등록합니다.
2. 다운 스트림 메시지를 보내고 받습니다.
메시지를 보냅니다.
- 앱 서버는 클라이언트 앱에 메시지를 보냅니다.
- 앱 서버는 GCM 연결 서버로 메시지를 보냅니다.
- GCM 연결 서버는 기기가 오프라인 상태인 경우 메시지를 대기열에 넣고 저장합니다.
- 기기가 온라인 상태이면 GCM 연결 서버가 메시지를 기기로 전송합니다.
- 장치에서 클라이언트 앱은 플랫폼 별 구현에 따라 메시지를 받습니다.
메시지를 받습니다.
- 클라이언트 앱이 GCM 연결 서버에서 메시지를 받습니다.
3. 업 스트림 메시지를 보내고 받습니다.
이 기능은 XMPP 연결 서버를 사용하는 경우에만 사용할 수 있습니다.
메시지를 보냅니다.
- 클라이언트 앱은 앱 서버로 메시지를 보앱니다.
- 장치에서 클라이언트 응용프로그램은 XMPP 연결 서버에 메시지를 보냅니다.
- XMPP 연결 서버는 서버 연결이 끊어지면 메시지를 대기열에 포함하고 저장합니다.
- 앱 서버가 다시 연결되면 XMPP 연결 서버가 메시지를 앱 서버로 보냅니다.
메시지를 받습니다.
- 앱 서버는 XMPP 연결 서버에서 메시지를 수신한 다음 다음을 수행합니다.
- 클라이언트 앱 sender 정보를 확인하기 위해 메시지 헤더 구문을 분석합니다.
- XMPP 연결 서버에 "ack"를 보내 메시지 수신을 확인합니다.
- 선택적으로 클라이언트 앱에서 정의한대로 메시지 페이로드 구문을 분석합니다.