Миграция Google Firebase Cloud Messaging с помощью REST API и портал Azure

В этой статье описаны основные возможности интеграции Центров уведомлений Azure с Firebase Cloud Messaging версии 1. Как напоминание, Google перестанет поддерживать устаревший ПРОТОКОЛ HTTP FCM 20 июня 2024 года, поэтому перед этим необходимо перенести приложения и полезные данные уведомлений в новый формат. Все методы подключения будут готовы к миграции к 1 марта 2024 г.

Внимание

По состоянию на июнь 2024 года устаревшие API FCM больше не будут поддерживаться и будут прекращены. Чтобы избежать сбоев в службе push-уведомлений, необходимо как можно скорее перейти к протоколу FCM версии 1.

Основные понятия для FCM версии 1

  • Поддерживается новый тип платформы с именем FCM версии 1.
  • Для FCM версии 1 используются новые API, учетные данные, регистрации и установки.

Примечание.

Существующая платформа FCM называется устаревшей версией FCM в этой статье.

Шаги миграции

Устаревший API Cloud Messaging (FCM) Firebase будет устарел к июля 2024 года. Вы можете начать миграцию с устаревшего протокола HTTP на FCM версии 1 1 марта 2024 г. К июню 2024 г. необходимо завершить миграцию. В этом разделе описаны шаги по миграции из устаревшей версии FCM в FCM версии 1 с помощью REST API центров уведомлений.

REST API

В следующем разделе описывается, как выполнить миграцию с помощью REST API.

Шаг 1. Добавление учетных данных FCM версии 1 в концентратор

Первым шагом является добавление учетных данных с помощью портал Azure, операции концентратора управления или концентратора плоскости данных.

Создание JSON-файла учетной записи службы Google

  1. В консоли Firebase выберите проект и перейдите к параметрам проекта.

  2. Перейдите на вкладку "Учетные записи службы", создайте учетную запись службы и создайте закрытый ключ из учетной записи службы Google.

  3. Выберите " Создать новый закрытый ключ" , чтобы создать JSON-файл. Скачайте и откройте файл. Замените значения для project_idучетных private_keyданных центра уведомлений Azure и client_email, так как они необходимы для обновления учетных данных центра уведомлений Azure.

    Снимок экрана: параметры проекта консоли Firebase.

    ИЛИ

    Если вы хотите создать учетную запись службы с настраиваемым разрешением на доступ, можно создать учетную запись службы с помощью страницы IAM и Администратор > учетных записей служб. Перейдите на страницу непосредственно, щелкнув "Управление разрешениями учетной записи службы". Вы можете создать учетную запись службы с одной из следующих ролей:

    • Firebase Администратор (role/firebase.admin)
    • Firebase Grow Администратор (role/firebase.growth Администратор)
    • Пакет SDK Администратор Firebase Администратор istrator Service Agent (role/firebase.sdk Администратор ServiceAgent)
    • Агент службы подготовки пакета SDK Firebase (role/firebase.sdkProvisioningServiceAgent)

    Снимок экрана: параметры учетной записи службы IAM.

Вариант 1. Обновление учетных данных FcmV1 с помощью портал Azure

Перейдите в центр уведомлений в портал Azure и выберите Параметры > Google (FCM версии 1). Получите значения закрытого ключа, идентификатора проекта и электронной почты клиента из JSON-файла учетной записи службы, полученного из предыдущего раздела, и сохраните их для последующего использования.

Снимок экрана: параметры учетных данных Firebase портал Azure.

Вариант 2. Обновление учетных данных FcmV1 с помощью операции концентратора плоскости управления

См. описание FcmV1Credential в NotificationHub.

  • Использование ВЕРСИИ API: 2023-10-01-preview

  • FcmV1CredentialProperties:

    Имя. Тип
    clientEmail строка
    privateKey строка
    projectId строка

Вариант 3. Обновление учетных данных FcmV1 с помощью операции концентратора плоскости данных

См. статью "Создание концентратора уведомлений" и "Обновление концентратора уведомлений".

  • Использование ВЕРСИИ API: 2015-01
  • Не забудьте поместить FcmV1Credential после GcmCredential, так как порядок важен.

Например, ниже приведен текст запроса:

<NotificationHubDescription xmlns:i='http://www.w3.org/2001/XMLSchema-instance' 
    xmlns='http://schemas.microsoft.com/netservices/2010/10/servicebus/connect'> 
    <ApnsCredential> 
        <Properties> 
            <Property> 
                <Name>Endpoint</Name> 
                <Value>{_apnsCredential.Endpoint}</Value> 
            </Property> 
            <Property> 
                <Name>AppId</Name> 
                <Value>{_apnsCredential.AppId}</Value> 
            </Property> 
            <Property> 
                <Name>AppName</Name> 
                <Value>{_apnsCredential.AppName}</Value> 
            </Property> 
            <Property> 
                <Name>KeyId</Name> 
                <Value>{_apnsCredential.KeyId}</Value> 
            </Property> 
            <Property> 
                <Name>Token</Name> 
                <Value>{_apnsCredential.Token}</Value> 
            </Property> 
        </Properties> 
    </ApnsCredential> 
    <WnsCredential> 
        <Properties> 
            <Property> 
                <Name>PackageSid</Name> 
                <Value>{_wnsCredential.PackageSid}</Value> 
            </Property> 
            <Property> 
                <Name>SecretKey</Name> 
                <Value>{_wnsCredential.SecretKey}</Value> 
            </Property> 
        </Properties> 
    </WnsCredential> 
    <GcmCredential> 
        <Properties> 
            <Property> 
                <Name>GoogleApiKey</Name> 
                <Value>{_gcmCredential.GoogleApiKey}</Value> 
            </Property> 
        </Properties> 
    </GcmCredential> 
    <FcmV1Credential> 
        <Properties> 
            <Property> 
                <Name>ProjectId</Name> 
                <Value>{_fcmV1Credential.ProjectId}</Value> 
            </Property> 
            <Property> 
                <Name>PrivateKey</Name> 
                <Value>{_fcmV1Credential.PrivateKey}</Value> 
            </Property> 
            <Property> 
                <Name>ClientEmail</Name> 
                <Value>{_fcmV1Credential.ClientEmail}</Value> 
            </Property> 
        </Properties> 
    </FcmV1Credential> 
</NotificationHubDescription>

Шаг 2. Управление регистрацией и установкой

Для сценариев прямого отправки перейдите непосредственно к шагу 3. Если вы используете один из пакетов SDK Azure, ознакомьтесь со статьей о пакетах SDK.

Вариант 1. Создание регистрации FCM версии 1 или обновление регистрации GCM до FCM версии 1

Если у вас есть существующая регистрация GCM, обновите регистрацию до FcmV1Registration. См. статью "Создание или обновление регистрации". Если у вас нет существующей GcmRegistration, создайте новую регистрацию в качестве FcmV1Registration. См. статью "Создание регистрации". Текст запроса регистрации должен отображаться в следующем примере:

// FcmV1Registration 
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
    <content type="application/xml">
        <FcmV1RegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
            <Tags>myTag, myOtherTag</Tags>
            <FcmV1RegistrationId>{deviceToken}</FcmV1RegistrationId>
        </FcmV1RegistrationDescription>
    </content>
</entry> 

// FcmV1TemplateRegistration 
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
    <content type="application/xml">
        <FcmV1TemplateRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
            <Tags>myTag, myOtherTag</Tags>
            <FcmV1RegistrationId>{deviceToken}</FcmV1RegistrationId>
            <BodyTemplate><![CDATA[ {BodyTemplate}]]></BodyTemplate>
        </FcmV1TemplateRegistrationDescription>
    </content>
</entry>

Вариант 2. Создание установки FCM c1 или обновление установки GCM до FCM версии 1

См. статью "Создание или перезапись установки и установка platformFCMV1".

Шаг 3. Отправка push-уведомления

Вариант 1. Отладка отправки

Используйте эту процедуру для тестирования уведомлений до варианта 2, 3 или 4. См. статью "Центры уведомлений— отладка отправки".

Примечание.

Используйте версию API: 2023-10-01-preview.

В заголовке:

Заголовок запроса Значение
Content-Type application/json;charset=utf-8
ServiceBusNotification-Format fcmV1 Установка илиtemplate
Servicebusnotification-Tags {идентификатор одного тега}

Проверьте полезные данные со следующей структурой с помощью отладочной отправки. Обратите внимание, что FcmV1 представляет значительное изменение структуры полезных данных сообщения JSON:

  1. Все полезные данные перемещаются под объектом сообщения.
  2. Параметры, относящиеся к Android, перемещены в объект Android и time_to_live теперь ttl имеют строковое значение.
  3. Теперь data поле разрешает только неструктурированное сопоставление строк с строкой.
  4. Дополнительные сведения см . в справочнике по FCM.

Кроме того, можно выполнить тестовую отправку (отладочную отправку) с помощью портал Azure:

Снимок экрана: страница отправки теста портал Azure.

Вариант 2. Прямая отправка

Выполните прямую отправку. В заголовке запроса задайте значение ServiceBusNotification-FormatfcmV1.

Вариант 3. Собственное уведомление FcmV1 (отправка аудитории)

Выполните отправку собственных уведомлений FcmV1. Ознакомьтесь с собственным уведомлением Google Cloud Messaging (GCM). В заголовке запроса задайте значение ServiceBusNotification-FormatfcmV1. Например, в тексте запроса:

{ 
  "message": { 
    "notification": {  
        "title": "Breaking News",  
        "body": "FcmV1 is ready."  
        }, 
    "android": {  
        "data": {  
            "name": "wrench",  
            "mass": "1.3kg",  
            "count": "3"  
            }  
        } 
    } 
}

Вариант 4. Уведомление о шаблоне

Вы можете протестировать отправку шаблона с новым текстом запроса после новой структуры полезных данных JSON. Никаких других изменений не требуется вносить. См. статью "Отправить уведомление о шаблоне".

Следующие шаги

Миграция Firebase Cloud Messaging с помощью пакетов SDK Azure