Google Cloud MessagingGoogle Cloud Messaging

경고

Google이 사용 되지 않는 GCM-4 월 10 일, 2018.Google deprecated GCM as of April 10, 2018. 다음 문서 및 샘플 프로젝트는 더 이상 유지 되지 않을 수 있습니다.The following docs and sample projects may no longer be maintained. Google의 GCM 서버 및 클라이언트 Api는 2019 년 5 월 29 일에 곧 제거 될 예정입니다.Google's GCM server and client APIs will be removed as soon as May 29, 2019. Google은 GCM 앱을 FCM (Firebase Cloud Messaging)로 마이그레이션하는 것을 권장 합니다.Google recommends migrating GCM apps to Firebase Cloud Messaging (FCM). GCM 사용 중단 및 마이그레이션에 대 한 자세한 내용은 Google 사용 되지 않는 클라우드 메시징을 참조 하세요.For more information about GCM deprecation and migration, see Google Deprecated Cloud Messaging.

Xamarin에서 Firebase Cloud Messaging 사용을 시작 하려면 Firebase 클라우드 메시징을 참조 하세요.To start using Firebase Cloud Messaging with Xamarin, see Firebase Cloud Messaging.

GCM (Google Cloud Messaging)은 모바일 앱과 서버 응용 프로그램 간의 메시징을 용이 하 게 하는 서비스입니다. 이 문서에서는 GCM이 작동 하는 방식에 대 한 개요를 제공 하 고, 앱에서 GCM을 사용할 수 있도록 Google 서비스를 구성 하는 방법을 설명 합니다.Google Cloud Messaging (GCM) is a service that facilitates messaging between mobile apps and server applications. This article provides an overview of how GCM works, and it explains how to configure Google Services so your app can use GCM.

Google Cloud Messaging 로고Google Cloud Messaging logo

이 항목에서는 앱과 앱 서버 간에 메시지를 라우팅하 Google Cloud Messaging는 방법에 대 한 개략적인 개요를 제공 하 고, 앱에서 GCM 서비스를 사용할 수 있도록 자격 증명을 획득 하는 단계별 절차를 제공 합니다.This topic provides a high-level overview of how Google Cloud Messaging routes messages between your app and an app server, and it provides a step-by-step procedure for acquiring credentials so that your app can use GCM services.

개요Overview

GCM (Google Cloud Messaging)은 서버 응용 프로그램과 모바일 클라이언트 앱 간의 메시지 보내기, 라우팅 및 큐 처리를 처리 하는 서비스입니다.Google Cloud Messaging (GCM) is a service that handles the sending, routing, and queueing of messages between server applications and mobile client apps. 클라이언트 앱 은 장치에서 실행 되는 GCM 사용 앱입니다.A client app is a GCM-enabled app that runs on a device. 사용자 또는 회사에서 제공 하는 앱 서버 는 클라이언트 앱이 gcm을 통해 통신 하는 gcm 사용 서버입니다.The app server (provided by you or your company) is the GCM-enabled server that your client app communicates with through GCM:

GCM은 클라이언트 앱과 앱 서버 사이에 상주 합니다.GCM resides between the client app and the app server

GCM을 사용 하 여 앱 서버는 단일 장치, 장치 그룹 또는 토픽에 구독 된 여러 장치에 메시지를 보낼 수 있습니다.Using GCM, app servers can send messages to a single device, a group of devices, or a number of devices that are subscribed to a topic. 클라이언트 앱은 GCM을 사용 하 여 앱 서버 (예: 원격 알림 수신)에서 다운스트림 메시지를 구독할 수 있습니다.Your client app can use GCM to subscribe to downstream messages from an app server (for example, to receive remote notifications). 또한 GCM을 사용 하면 클라이언트 앱이 업스트림 메시지를 앱 서버로 다시 보낼 수 있습니다.Also, GCM makes it possible for client apps to send upstream messages back to the app server.

GCM 용 앱 서버를 구현 하는 방법에 대 한 자세한 내용은 Gcm 연결 서버 정보를 참조 하세요.For information about implementing an app server for GCM, see About GCM Connection Server.

Google Cloud Messaging 작업Google Cloud Messaging in Action

다운스트림 메시지가 앱 서버에서 클라이언트 앱으로 전송 되 면 앱 서버는 GCM 연결 서버에 메시지를 보냅니다. 그러면 GCM 연결 서버가 클라이언트 앱을 실행 하는 장치에 메시지를 전달 합니다.When downstream messages are sent from an app server to a client app, the app server sends the message to a GCM connection server; the GCM connection server, in turn, forwards the message to a device that is running your client app. HTTP 또는 Xmpp (확장할 수 있는 메시징 및 현재 상태 프로토콜)를 통해 메시지를 보낼 수 있습니다.Messages can be sent over HTTP or XMPP (Extensible Messaging and Presence Protocol). 클라이언트 앱은 항상 연결 되지 않거나 실행 되 고 있지 않기 때문에 GCM 연결 서버는 메시지를 큐 하 고 저장 한 후 다시 연결 하 여 사용할 수 있게 되 면 클라이언트 앱에 보냅니다.Because client apps are not always connected or running, the GCM connection server enqueues and stores messages, sending them to client apps as they reconnect and become available. 마찬가지로, GCM은 앱 서버를 사용할 수 없는 경우 클라이언트 앱에서 앱 서버로 업스트림 메시지를 큐에 삽입 합니다.Similarly, GCM will enqueue upstream messages from the client app to the app server if the app server is unavailable.

GCM은 다음 자격 증명을 사용 하 여 앱 서버와 클라이언트 앱을 식별 하 고 이러한 자격 증명을 사용 하 여 GCM을 통해 메시지 트랜잭션에 권한을 부여 합니다.GCM uses the following credentials to identify the app server and your client app, and it uses these credentials to authorize message transactions through GCM:

  • Api 키 – api 키를 사용 하면 앱 서버에서 Google 서비스에 액세스할 수 있습니다. GCM은이 키를 사용 하 여 앱 서버를 인증 합니다.API Key – The API key gives your app server access to Google services; GCM uses this key to authenticate your app server. GCM 서비스를 사용 하려면 먼저 프로젝트를 만들어 Google 개발자 콘솔 에서 API 키를 가져와야 합니다.Before you can use the GCM service, you must first obtain an API key from the Google Developer Console by creating a project. API 키를 안전 하 게 유지 해야 합니다. API 키를 보호 하는 방법에 대 한 자세한 내용은 api 키를 안전 하 게 사용 하기 위한 모범 사례를 참조 하세요.The API Key should be kept secure; for more information about protecting your API key, see Best practices for securely using API keys.

  • 보낸 사람 id발신자 id 는 클라이언트 앱에 대 한 앱 서버 권한을 부여 하 – 클라이언트 앱에 메시지를 보낼 수 있는 앱 서버를 식별 하는 고유 번호입니다.Sender ID – The Sender ID authorizes the app server to your client app – it is a unique number that identifies the app server that is permitted to send messages to your client app. 보낸 사람 ID는 프로젝트 번호 이기도 합니다. 프로젝트를 등록할 때 Google 개발자 콘솔에서 보낸 사람 ID를 가져옵니다.The sender ID is also your project number; you obtain the sender ID from the Google Developers Console when you register your project.

  • 등록 토큰 – 등록 토큰 은 지정 된 장치에서 클라이언트 앱의 GCM id입니다.Registration Token – The Registration Token is the GCM identity of your client app on a given device. 등록 토큰은 – 런타임에 생성 됩니다. 앱은 장치에서 실행 되는 동안 GCM에 처음 등록할 때 등록 토큰을 받습니다.The registration token is generated at run time – your app receives a registration token when it first registers with GCM while running on a device. 등록 토큰은 해당 특정 장치에서 실행 되는 클라이언트 앱의 인스턴스에 게 GCM에서 메시지를 수신 하는 권한을 부여 합니다.The registration token authorizes an instance of your client app (running on that particular device) to receive messages from GCM.

  • 응용 프로그램 id – GCM에서 메시지를 수신 하도록 등록 하는 클라이언트 앱 (지정 된 장치와 무관)의 id입니다.Application ID – The identity of your client app (independent of any given device) that registers to receive messages from GCM. Android에서 응용 프로그램 ID는 com.xamarin.gcmexample와 같은 Androidmanifest에 기록 된 패키지 이름입니다.On Android, the application ID is the package name recorded in AndroidManifest.xml, such as com.xamarin.gcmexample.

Google Cloud Messaging 설정 (이 가이드의 뒷부분)에서는 프로젝트를 만들고 이러한 자격 증명을 생성 하는 방법에 대 한 자세한 지침을 제공 합니다.Setting Up Google Cloud Messaging (later in this guide) provides detailed instructions for creating a project and generating these credentials.

다음 섹션에서는 클라이언트 앱이 GCM을 통해 앱 서버와 통신할 때 이러한 자격 증명을 사용 하는 방법을 설명 합니다.The following sections explain how these credentials are used when client apps communicate with app servers through GCM.

GCM을 사용한 등록Registration with GCM

장치에 설치 된 클라이언트 앱은 먼저 GCM에 등록 해야 메시지를 받을 수 있습니다.A client app installed on a device must first register with GCM before messaging can take place. 클라이언트 앱은 다음 다이어그램에 표시 된 등록 단계를 완료 해야 합니다.The client app must complete the registration steps shown in the following diagram:

앱 등록 단계App registration steps

  1. 클라이언트 앱은 GCM에 연결 하 여 보낸 사람 ID를 GCM에 전달 하는 등록 토큰을 가져옵니다.The client app contacts GCM to obtain a registration token, passing the sender ID to GCM.

  2. GCM은 클라이언트 앱에 등록 토큰을 반환 합니다.GCM returns a registration token to the client app.

  3. 클라이언트 앱이 등록 토큰을 앱 서버에 전달 합니다.The client app forwards the registration token to the app server.

앱 서버는 나중에 클라이언트 앱과 통신 하기 위해 등록 토큰을 캐시 합니다.The app server caches the registration token for subsequent communications with the client app. 필요에 따라 앱 서버에서 다시 클라이언트 앱에 승인을 보내 등록 토큰을 받았음을 나타낼 수 있습니다.Optionally, the app server can send an acknowledgement back to the client app to indicate that the registration token was received. 이 핸드셰이크를 수행한 후 클라이언트 앱은 앱 서버에서 메시지를 수신 하거나 메시지를 보낼 수 있습니다.After this handshake takes place, the client app can receive messages from (or send messages to) the app server.

클라이언트 앱이 더 이상 앱 서버에서 메시지를 수신 하지 않을 때 앱 서버에 등록 토큰을 삭제 하는 요청을 보낼 수 있습니다.When the client app no longer wants to receive messages from the app server, it can send a request to the app server to delete the registration token. 클라이언트 앱이 토픽 메시지를 수신 하는 경우 (이 문서의 뒷부분에서 설명) 항목에서 구독을 취소할 수 있습니다.If the client app is receiving topic messages (explained later in this article), it can unsubscribe from the topic. 클라이언트 앱이 장치에서 제거 되 면 GCM이이를 감지 하 고 등록 토큰을 삭제 하도록 앱 서버에 자동으로 알립니다.If the client app is uninstalled from a device, GCM detects this and automatically notifies the app server to delete the registration token.

Google의 클라이언트 앱 등록 은 등록 프로세스에 대해 자세히 설명 합니다. 등록 취소 및 구독 취소에 대해 설명 하 고, 클라이언트 앱이 제거 될 때 등록 취소 프로세스를 설명 합니다.Google's Registering Client Apps explains the registration process in more detail; it explains unregistration and unsubscription, and it describes the process of unregistration when a client app is uninstalled.

다운스트림 메시징Downstream Messaging

앱 서버는 클라이언트 앱에 다운스트림 메시지를 보낼 때 다음 다이어그램에 설명 된 단계를 따릅니다.When the app server sends a downstream message to the client app, it follows the steps illustrated in the following diagram:

다운스트림 메시징 저장소 및 전달 다이어그램Downstream messaging store and forward diagram

  1. 앱 서버는 GCM로 메시지를 보냅니다.The app server sends the message to GCM.

  2. 클라이언트 장치를 사용할 수 없는 경우 GCM 서버는 나중에 전송할 수 있도록 메시지를 큐에 저장 합니다.If the client device is not available, the GCM server stores the message in a queue for later transmission.

  3. 클라이언트 장치를 사용할 수 있는 경우 GCM은 해당 장치의 클라이언트 앱에 메시지를 보냅니다.When the client device is available, GCM sends the message to the client app on that device.

  4. 클라이언트 앱은 GCM에서 메시지를 수신 하 고 그에 따라 처리 합니다.The client app receives the message from GCM and handles it accordingly. 예를 들어 메시지가 원격 알림과 같은 경우 사용자에 게 표시 됩니다.For example, if the message is a remote notification, it is presented to the user.

이 메시징 시나리오에서 (앱 서버는 단일 클라이언트 앱에 메시지를 보내는 경우) 메시지의 길이는 최대 4kB가 될 수 있습니다.In this messaging scenario (where the app server sends a message to a single client app), messages can be up to 4kB in length.

Android에서 다운스트림 GCM 메시지를 수신 하는 방법에 대 한 자세한 내용 (코드 샘플 포함)은 원격 알림을 참조 하세요.For detailed information (including code samples) about receiving downstream GCM messages on Android, see Remote Notifications.

토픽 메시지Topic Messaging

토픽 메시징은 앱 서버에서 토픽을 구독 하는 여러 클라이언트 앱 장치 (예: 날씨 예보)에 단일 메시지를 보내는 다운스트림 메시지 유형입니다.Topic Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that subscribe to a topic (such as a weather forecast). 토픽 메시지의 길이는 최대 2KB 이며 토픽 메시징은 앱 당 최대 100만 개의 구독을 지원 합니다.Topic messages can be up to 2KB in length, and topic messaging supports up to one million subscriptions per app. GCM이 토픽 메시징에만 사용 되는 경우 클라이언트 앱은 앱 서버에 등록 토큰을 보낼 필요가 없습니다.If GCM is being used only for topic messaging, the client app is not required to send a registration token to the app server. Google의 토픽 구현 메시징은 앱 서버에서 특정 토픽을 구독 하는 여러 장치에 메시지를 보내는 방법을 설명 합니다.Google's Implementing Topic Messaging explains how to send messages from an app server to multiple devices that subscribe to a particular topic.

그룹 메시징Group Messaging

그룹 메시징은 앱 서버에서 단일 메시지를 그룹에 속하는 여러 클라이언트 앱 장치 (예: 단일 사용자에 게 속한 장치 그룹)에 보내는 다운스트림 메시지 유형입니다.Group Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that belong to a group (for example, a group of devices that belong to a single user). 그룹 메시지는 iOS 장치에 대 한 최대 2KB의 길이 이며 Android 장치에서는 최대 4KB입니다.Group messages can be up to 2KB in length for iOS devices, and up to 4KB in length for Android devices. 그룹은 최대 20 개의 구성원으로 제한 됩니다.A group is limited to a maximum of 20 members. Google의 장치 그룹 메시징은 앱 서버가 그룹에 속한 장치에서 실행 되는 여러 클라이언트 앱 인스턴스에 단일 메시지를 보내는 방법을 설명 합니다.Google's Device Group Messaging explains how app servers can send a single message to multiple client app instances running on devices that belong to a group.

업스트림 메시징Upstream Messaging

클라이언트 앱이 Xmpp를 지 원하는 서버에 연결 하는 경우 다음 다이어그램에 설명 된 대로 메시지를 앱 서버에 다시 보낼 수 있습니다.If your client app connects to a server that supports XMPP, it can send messages back to the app server as illustrated in the following diagram:

업스트림 메시징 다이어그램Upstream messaging diagram

  1. 클라이언트 앱은 GCM XMPP 연결 서버에 메시지를 보냅니다.The client app sends a message to the GCM XMPP connection server.

  2. 앱 서버의 연결이 끊어지면 GCM 서버는 나중에 전달할 수 있도록 메시지를 큐에 저장 합니다.If the app server is disconnected, the GCM server stores the message in a queue for later forwarding.

  3. 앱 서버를 다시 연결할 때 GCM은 메시지를 앱 서버에 전달 합니다.When the app server is re-connected, GCM forwards the message to the app server.

  4. 앱 서버는 메시지를 구문 분석 하 여 클라이언트 앱의 id를 확인 한 다음 "ack"를 GCM에 전송 하 여 메시지 수신을 승인 합니다.The app server parses the message to verify the identity of the client app, then it sends an "ack" to GCM to acknowledge message receipt.

  5. 앱 서버는 메시지를 처리 합니다.The app server processes the message.

Google의 업스트림 메시지 는 JSON으로 인코딩된 메시지를 구조화 하 고 GOOGLE의 Xmpp 기반 클라우드 연결 서버를 실행 하는 앱 서버에 보내는 방법을 설명 합니다.Google's Upstream Messages explains how to structure JSON-encoded messages and send them to app servers that run Google's XMPP-based Cloud Connection Server.

Google Cloud Messaging 설정Setting Up Google Cloud Messaging

앱에서 GCM 서비스를 사용 하려면 먼저 Google의 GCM 서버에 액세스 하기 위한 자격 증명을 얻어야 합니다.Before you can use GCM services in your app, you must first acquire credentials for access to Google's GCM servers. 다음 섹션에서는이 프로세스를 완료 하는 데 필요한 단계에 대해 설명 합니다.The following sections describe the steps required to complete this process:

앱에 Google 서비스를 사용 하도록 설정Enable Google Services for Your App

  1. Google 계정 (예: gmail 주소)으로 Google 개발자 콘솔 에 로그인 하 고 새 프로젝트를 만듭니다.Sign into the Google Developers Console with your Google account (i.e, your gmail address) and create a new project. 기존 프로젝트가 있는 경우 GCM을 사용 하도록 설정할 프로젝트를 선택 합니다.If you have an existing project, choose the project that you want to become GCM-enabled. 다음 예제에서는 XamarinGCM 이라는 새 프로젝트를 만듭니다.In the following example, a new project called XamarinGCM is created:

    XamarinGCM 프로젝트를 만드는Creating XamarinGCM project

  2. 다음으로 앱에 대 한 패키지 이름 (이 예제에서는 패키지 이름은 .com. xamarin.ios)을 입력 하 고 계속을 클릭 하 여 서비스를 선택 하 고 구성합니다.Next, enter the package name for your app (in this example, the package name is com.xamarin.gcmexample) and click Continue to Choose and configure services:

    패키지 이름을 입력Entering the package name

    이 패키지 이름은 앱에 대 한 응용 프로그램 ID 이기도 합니다.Note that this package name is also the application ID for your app.

  3. 서비스 선택 및 구성 섹션에는 앱에 추가할 수 있는 Google 서비스가 나열 됩니다.The Choose and configure services section lists the Google services that you can add to your app. 클라우드 메시징을 클릭 합니다.Click Cloud Messaging:

    클라우드 메시징선택Choose Cloud Messaging

  4. 다음으로 GOOGLE CLOUD MESSAGING 사용을 클릭 합니다.Next, click ENABLE GOOGLE CLOUD MESSAGING:

    Google Cloud Messaging 사용Enable Google Cloud Messaging

  5. 앱에 대 한 서버 API 키보낸 사람 ID 가 생성 됩니다.A Server API key and a Sender ID are generated for your app. 이러한 값을 기록 하 고 닫기를 클릭 합니다.Record these values and click CLOSE:

    표시 된서버 API 키 및 보낸 사람 IDServer API Key and Sender ID displayed

    API 키를 보호 하는 것은 공개적으로 사용 하기에 적합 하지 –.Protect the API key – it is not intended for public use. API 키가 손상 되 면 권한이 없는 서버에서 클라이언트 응용 프로그램에 메시지를 게시할 수 있습니다.If the API key is compromised, unauthorized servers could publish messages to client applications. Api 키를 안전 하 게 사용 하 는 모범 사례는 api 키를 보호 하는 데 유용한 지침을 제공 합니다.Best practices for securely using API keys provides useful guidelines for protecting your API Key.

프로젝트 설정 보기View Your Project Settings

언제 든 지 Google Cloud Console 에 로그인 하 고 프로젝트를 선택 하 여 프로젝트 설정을 볼 수 있습니다.You can view your project settings at any time by signing into the Google Cloud Console and selecting your project. 예를 들어 페이지 맨 위에 있는 풀 다운 메뉴에서 프로젝트를 선택 하 여 보낸 사람 ID 를 볼 수 있습니다 (이 예제에서는 프로젝트를 XamarinGCM라고 함).For example, you can view the Sender ID by selecting your project in the pull down menu at the top of the page (in this example, the project is called XamarinGCM). 보낸 사람 ID는 다음 스크린샷에 표시 된 것과 같은 프로젝트 번호입니다. 발신자 ID는 9349932736입니다.The Sender ID is the Project number as shown in this screenshot (the Sender ID here is 9349932736):

보낸 사람 ID를 볼Viewing the Sender ID

Api 키를 보려면 api 관리자 를 클릭 한 다음 자격 증명을 클릭 합니다.To view the API key, click API Manager and then click Credentials:

API 키보기Viewing the API key

추가 정보For Further Reading

  • Google의 클라이언트 앱 등록 은 클라이언트 등록 프로세스에 대해 자세히 설명 하 고 자동 재시도를 구성 하 고 등록 상태를 동기화 상태로 유지 하는 방법에 대 한 정보를 제공 합니다.Google's Registering Client Apps describes the client registration process in more detail, and it provides information about configuring automatic retry and keeping the registration state in sync.

  • Rfc 6120RFC 6121 은 xmpp (확장할 수 있는 메시징 및 현재 상태 프로토콜)를 설명 하 고 정의 합니다.RFC 6120 and RFC 6121 explain and define the Extensible Messaging and Presence Protocol (XMPP).

요약Summary

이 문서에서는 GCM (Google Cloud Messaging의 개요를 제공 했습니다.This article provided an overview of Google Cloud Messaging (GCM). 앱 서버와 클라이언트 앱 간의 메시징을 식별 하 고 권한을 부여 하는 데 사용 되는 다양 한 자격 증명에 대해 설명 했습니다.It explained the various credentials that are used to identify and authorize messaging between app servers and client apps. 가장 일반적인 메시징 시나리오를 설명 하 고 gcm 서비스를 사용 하도록 GCM에 앱을 등록 하는 단계에 대해 자세히 설명 합니다.It illustrated the most common messaging scenarios, and it detailed the steps for registering your app with GCM to use GCM services.