Обмен сообщениями Firebase CloudFirebase Cloud Messaging

Firebase Cloud Messaging (FCM) — это служба, которая облегчает обмен сообщениями между мобильные приложения и серверные приложения. В этой статье представлен обзор принципов работы FCM и здесь объясняется, как настроить службы Google, чтобы ваше приложение может использовать FCM.Firebase Cloud Messaging (FCM) is a service that facilitates messaging between mobile apps and server applications. This article provides an overview of how FCM works, and it explains how to configure Google Services so that your app can use FCM.

Изображение с параметрами firebase Cloud MessagingFirebase Cloud Messaging hero image

В этом разделе представлен общий обзор как Firebase Cloud Messaging маршрутизирует сообщения между приложение Xamarin.Android и серверов приложений, а также пошаговые процедуры для получения учетных данных, таким образом, чтобы ваше приложение может использовать службы FCM.This topic provides a high-level overview of how Firebase Cloud Messaging routes messages between your Xamarin.Android app and an app server, and it provides a step-by-step procedure for acquiring credentials so that your app can use FCM services.

ОбзорOverview

Firebase Cloud Messaging (FCM) — это кроссплатформенная служба, которая обрабатывает отправки, маршрутизации и их постановку в очередь сообщений между серверных приложений и мобильных клиентских приложений.Firebase Cloud Messaging (FCM) is a cross-platform service that handles the sending, routing, and queueing of messages between server applications and mobile client apps. FCM является преемником для Google Cloud Messaging (GCM), и он был основан на сервисы Google Play.FCM is the successor to Google Cloud Messaging (GCM), and it is built on Google Play Services.

Как показано на следующей схеме, FCM выступает в качестве посредника между отправителей и клиентами.As illustrated in the following diagram, FCM acts as an intermediary between message senders and clients. Объект клиентское приложение — это приложение с поддержкой FCM, которое выполняется на устройстве.A client app is an FCM-enabled app that runs on a device. Сервера приложений (предоставляемое вы или ваша организация) — это сервер с поддержкой FCM, клиентское приложение обменивается данными с помощью FCM.The app server (provided by you or your company) is the FCM-enabled server that your client app communicates with through FCM. В отличие от GCM FCM делает возможным для отправки сообщения к клиентским приложениям напрямую через графический Интерфейс уведомления консоли Firebase:Unlike GCM, FCM makes it possible for you to send messages to client apps directly via the Firebase Console Notifications GUI:

FCM располагается между клиентское приложение и серверов приложенийFCM sits between the client app and an app server

С использованием FCM, серверы приложений может отправлять сообщения, на одно устройство, в группу устройств или для нескольких устройств, которые подписаны на раздел.Using FCM, app servers can send messages to a single device, to a group of devices, or to a number of devices that are subscribed to a topic. Клиентское приложение может использовать FCM подписаться на подчиненных сообщения с сервера приложений (например, для получения удаленных уведомлений).A client app can use FCM to subscribe to downstream messages from an app server (for example, to receive remote notifications). Дополнительные сведения о различных типах Firebase сообщений см. в разделе о сообщениях FCM.For more information about the different types of Firebase messages, see About FCM Messages.

Firebase Cloud Messaging в действииFirebase Cloud Messaging in action

Когда сообщение нисходящего потока отправляется клиентского приложения с сервера приложений, сервера приложений отправляет сообщение, FCM соединения сервера предоставляемый Google; подключение сервера FCM, в свою очередь, перенаправляет сообщение на устройство, на котором выполняется клиентское приложение.When a downstream message is sent to a client app from an app server, the app server sends the message to an FCM connection server provided by Google; the FCM connection server, in turn, forwards the message to a device that is running the client app. Сообщения могут отправляться по протоколу HTTP или XMPP (Extensible обмена сообщениями и присутствия протокол).Messages can be sent over HTTP or XMPP (Extensible Messaging and Presence Protocol). Поскольку клиентские приложения не всегда подключен или под управлением, FCM подключения сервера ставит в очередь и сохраняет сообщения, отправкой к клиентским приложениям, повторное подключение и становятся доступными.Because client apps are not always connected or running, the FCM connection server enqueues and stores messages, sending them to client apps as they reconnect and become available. Аналогичным образом FCM будет постановки в очередь вышестоящего сообщений из клиентского приложения для сервера приложений в случае недоступности сервера приложений.Similarly, FCM will enqueue upstream messages from the client app to the app server if the app server is unavailable. Дополнительные сведения о серверах FCM подключения, см. в разделе о Firebase Cloud Messaging Server.For more about FCM connection servers, see About Firebase Cloud Messaging Server.

FCM использует следующие учетные данные для идентификации сервера приложений и клиентского приложения и использует эти учетные данные для авторизации операций сообщения через FCM:FCM uses the following credentials to identify the app server and the client app, and it uses these credentials to authorize message transactions through FCM:

  • Идентификатор отправителякода отправителя — это уникальное числовое значение, присвоенное при создании проекта Firebase.Sender ID – The Sender ID is a unique numerical value that is assigned when you create your Firebase project. Идентификатор отправителя, используется для идентификации каждого сервера приложений, который можно отправлять сообщения в клиентское приложение.The sender ID is used to identify each app server that can send messages to the client app. Идентификатор отправителя также — номер проекта; Вы можете получить идентификатор отправителя в консоли Firebase, при регистрации проекта.The sender ID is also your project number; you obtain the sender ID from the Firebase Console when you register your project. Пример кода отправителя — 496915549731.An example of a Sender ID is 496915549731.

  • Ключ APIключ API предоставляет приложению доступ сервера к службам Firebase; FCM использует этот ключ для проверки подлинности сервера приложений.API Key – The API key gives the app server access to Firebase services; FCM uses this key to authenticate the app server. Эти учетные данные также называется ключ сервера или ключа веб-API.This credential is also referred to as the Server Key or the Web API Key. Например, ключ API AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.An example of an API Key is AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • Идентификатор приложения – удостоверение клиентского приложения (независимо от любого устройства), зарегистрированный на получение сообщений из FCM.App ID – The identity of your client app (independent of any given device) that registers to receive messages from FCM. Пример идентификатора приложения — 1:415712510732:android:0e1eb7a661af2460.An example of an App ID is 1:415712510732:android:0e1eb7a661af2460.

  • Маркер регистрациитокена регистрации (называемый также идентификатор экземпляра) представляет собой FCM идентификатор клиентского приложения на данном устройстве.Registration Token – The Registration Token (also referred to as the Instance ID) is the FCM identity of your client app on a given device. Маркер регистрации создается во время выполнения – приложение получает маркер регистрации, при ее первой регистрации в FCM во время выполнения на устройстве.The registration token is generated at run time – your app receives a registration token when it first registers with FCM while running on a device. Маркер регистрации авторизует экземпляр клиентского приложения (для запуска на этом конкретном устройстве) для получения сообщений из FCM.The registration token authorizes an instance of your client app (running on that particular device) to receive messages from FCM. Пример маркера регистрации — fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (очень длинную строку).An example of a registration token is fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (a very long string).

Параметр вверх Firebase Cloud Messaging (Далее в этом руководстве) содержатся подробные инструкции по созданию проекта и создания этих учетных данных.Setting Up Firebase Cloud Messaging (later in this guide) provides detailed instructions for creating a project and generating these credentials. При создании нового проекта в консоли Firebase, файл учетных данных с именем google-services.json создается – добавьте этот файл в проект Xamarin.Android, как описано в Удаленные уведомления с помощью FCM.When you create a new project in the Firebase Console, a credentials file called google-services.json is created – add this file to your Xamarin.Android project as explained in Remote Notifications with FCM.

В следующих разделах объясняется, как используются эти учетные данные, когда клиентские приложения взаимодействуют с серверами приложений через FCM.The following sections explain how these credentials are used when client apps communicate with app servers through FCM.

Регистрация в FCMRegistration with FCM

Клиентское приложение, сначала необходимо зарегистрировать в FCM, прежде чем обмена сообщениями может выполняться.A client app must first register with FCM before messaging can take place. Клиентское приложение необходимо выполнить действия по регистрации, показано на следующей схеме:The client app must complete the registration steps shown in the following diagram:

Схема шаги регистрации приложенийApp registration steps diagram

  1. Клиентское приложение обращается FCM для получения маркера регистрации, передача кода отправителя, ключ API и идентификатор приложения FCM.The client app contacts FCM to obtain a registration token, passing the sender ID, API Key, and App ID to FCM.

  2. FCM возвращает маркер регистрации в клиентское приложение.FCM returns a registration token to the client app.

  3. Клиентское приложение (необязательно) передает токен регистрации для сервера приложений.The client app (optionally) forwards the registration token to the app server.

Сервер приложений кэширует маркер регистрации для последующих соединений с клиентским приложением.The app server caches the registration token for subsequent communications with the client app. Сервер приложений могли отправлять подтверждение клиентское приложение, чтобы указать, что маркер регистрации было получено.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. Клиентское приложение может получить новый маркер регистрации, если старый токен нарушена (см. в разделе удаленные уведомления с помощью FCM пример как приложение получает маркер обновления регистрации).The client app may receive a new registration token if the old token is compromised (see Remote Notifications with FCM for an example of how an app receives registration token updates).

Когда клиентское приложение больше не хочет получать сообщения с сервера приложений, он может отправить запрос к серверу приложений, чтобы удалить маркер регистрации.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. Если клиентское приложение удаляется с устройства, FCM обнаружит это и автоматически уведомляет о том, чтобы удалить маркер регистрации сервера приложений.If the client app is uninstalled from a device, FCM detects this and automatically notifies the app server to delete the registration token.

Более низком уровне обмена сообщениямиDownstream messaging

На схеме ниже как Firebase Cloud Messaging хранит и пересылает сообщения подчиненных:The following diagram illustrates how Firebase Cloud Messaging stores and forwards downstream messages:

FCM использует хранилище и вперед для подчиненных обмена сообщениямиFCM uses store and forward for downstream messaging

Когда сервер приложение отправляет сообщение нисходящего потока в клиентское приложение, он выполняет указанные ниже действия как перечисленные в приведенной выше диаграмме:When the app server sends a downstream message to the client app, it uses the following steps as enumerated in the above diagram:

  1. Сервер приложений отправляет сообщение FCM.The app server sends the message to FCM.

  2. Если клиентское устройство не доступен, на сервере FCM хранятся сообщения в очередь для последующей передачи.If the client device is not available, the FCM server stores the message in a queue for later transmission. Сообщения хранятся в хранилище FCM более 4 недели (Дополнительные сведения см. в разделе параметр времени существования сообщения).Messages are retained in FCM storage for a maximum of 4 weeks (for more information, see Setting the lifespan of a message).

  3. Когда клиентское устройство станет доступным, FCM пересылает сообщение в клиентское приложение на этом устройстве.When the client device is available, FCM forwards the message to the client app on that device.

  4. Клиентское приложение получает сообщение от FCM, обрабатывает его и отображает его пользователю.The client app receives the message from FCM, processes it, and displays it to the user. Например если сообщение является удаленного уведомления, оно выводится пользователю в области уведомлений.For example, if the message is a remote notification, it is presented to the user in the notification area.

В этом сценарии обмена сообщениями (где сервера приложений отправляет сообщение одного клиентского приложения) сообщения могут иметь длину до 4 КБ.In this messaging scenario (where the app server sends a message to a single client app), messages can be up to 4kB in length.

Подробные сведения о получении подчиненных FCM-сообщений на устройстве Android, см. в разделе удаленные уведомления с помощью FCM.For detailed information about receiving downstream FCM messages on Android, see Remote Notifications with FCM.

Обмен сообщениями в разделеTopic messaging

Раздел Messaging делает возможным для серверов приложений для отправки сообщения на несколько устройств, которые зарегистрировались для определенного раздела.Topic Messaging makes it possible for an app server to send a message to multiple devices that have opted in to a particular topic. Можно также составлять и отправлять сообщения раздела через графический Интерфейс уведомления консоли Firebase.You can also compose and send topic messages via the Firebase Console Notifications GUI. FCM обрабатывает маршрутизацией и доставкой сообщений раздела подписанных клиентам.FCM handles the routing and delivery of topic messages to subscribed clients. Эта функция может использоваться для сообщения, такие как оповещения об изменении погоды, биржевых котировок и заголовков новостей.This feature can be used for messages such as weather alerts, stock quotes, and headline news.

Схема обмена сообщениями разделаTopic messaging diagram

(После клиентское приложение получает маркер регистрации, как описано выше) в разделе обмена сообщениями используются следующие действия:The following steps are used in topic messaging (after the client app obtains a registration token as explained earlier):

  1. Клиентское приложение подписывается на раздел, отправляя сообщение подписаться в FCM.The client app subscribes to a topic by sending a subscribe message to FCM.

  2. Сервер приложений отправляет сообщения раздела FCM для распространения.The app server sends topic messages to FCM for distribution.

  3. FCM пересылает сообщения раздела для клиентов, которые подписаны на этот раздел.FCM forwards topic messages to clients that have subscribed to that topic.

Дополнительные сведения об обмене сообщениями через раздел Firebase, см. в разделе Google разделе обмена сообщениями на устройстве Android.For more information about Firebase topic messaging, see Google's Topic Messaging on Android.

Настройка Firebase Cloud MessagingSetting up Firebase Cloud Messaging

Перед использованием FCM служб в приложении, необходимо создать новый проект (или импортировать существующий проект) с помощью консоли Firebase.Before you can use FCM services in your app, you must create a new project (or import an existing project) via the Firebase Console. Следуйте инструкциям ниже, чтобы создать проект Firebase Cloud Messaging для вашего приложения:Use the following steps to create a Firebase Cloud Messaging project for your app:

  1. Войдите в консоли Firebase с вашей учетной записи Google (т. е. ваш адрес электронной почты Gmail) и нажмите кнопку создать новый ПРОЕКТ:Sign into the Firebase Console with your Google account (i.e., your Gmail address) and click CREATE NEW PROJECT:

    Кнопка "Создать новый проект"Create New Project button

    Если у вас есть существующий проект, нажмите кнопку импортировать проект Google.If you have an existing project, click import a Google project.

  2. В создайте проект диалоговое окно, введите имя проекта и нажмите кнопку Создание проекта.In the Create a project dialog, enter the name of your project and click CREATE PROJECT. В следующем примере вызывается проекта XamarinFCM создается:In the following example, a new project called XamarinFCM is created:

    Создать диалоговое окно проектаCreate a Project dialog

  3. В консоли Firebase Обзор, нажмите кнопку Добавление Firebase в приложение Android:In the Firebase Console Overview, click Add Firebase to your Android app:

    Добавление Firebase в приложение AndroidAdd Firebase to your Android app

  4. На следующем экране введите имя пакета приложения.In the next screen, enter the package name of your app. В этом примере имя пакета является com.xamarin.fcmexample.In this example, the package name is com.xamarin.fcmexample. Это значение должно соответствовать имени пакета приложения Android.This value must match the package name of your Android app. Также можно ввести псевдоним приложения в псевдоним приложения поля:An app nickname can also be entered in the App nickname field:

    Ввод примера FCM как псевдоним приложенияEntering FCM Example as the app nickname

  5. Если приложение использует динамических ссылок, приглашения или проверки подлинности Google, необходимо также ввести отладки сертификат для подписи.If your app uses Dynamic links, Invites, or Google Auth, you must also enter your debug signing certificate. Дополнительные сведения об обнаружении сертификата подписи см. в разделе отображение MD5 и SHA1 сигнатур.For more information about locating your signing certificate, see Finding your Keystore's MD5 or SHA1 Signature. В этом примере сертификат для подписи оставлено пустым.In this example, the signing certificate is left blank.

  6. Нажмите кнопку добавить приложение:Click ADD APP:

    Нажмите кнопку Добавить приложениеClicking the Add App button

    Ключ API сервера и идентификатор клиента, автоматически создаются для приложения.A Server API key and a Client ID are automatically generated for the app. Эта информация помещается в google-services.json файл, который автоматически загружается при выборе добавить приложение.This information is packaged in a google-services.json file that is automatically downloaded when you click ADD APP. Обязательно сохраните этот файл в надежном месте.Be sure to save this file in a safe place.

Подробный пример добавления google-services.json в проект приложения для получения сообщений уведомления FCM Push-уведомлений в Android, см. в разделе удаленные уведомления с помощью FCM.For a detailed example of how to add google-services.json to an app project to receive FCM push notification messages on Android, see Remote Notifications with FCM.

Для дальнейшего изученияFor further reading

СводкаSummary

В этой статье предоставляются общие сведения о из Firebase Cloud Messaging (FCM).This article provided an overview of Firebase Cloud Messaging (FCM). Оно описывает различные учетные данные, которые используются для идентификации и авторизации, обмен сообщениями между серверами приложений и клиентских приложений.It explained the various credentials that are used to identify and authorize messaging between app servers and client apps. Она иллюстрирует регистрации и подчиненных сценарии обмена сообщениями, и его подробные инструкции по регистрации приложения в FCM для использования служб FCM.It illustrated the registration and downstream messaging scenarios, and it detailed the steps for registering your app with FCM to use FCM services.