Migração do Google Firebase Cloud Messaging usando a API REST e o portal do Azure

Este artigo descreve os principais recursos para integrar os Hubs de Notificação do Azure com o Firebase Cloud Messaging (FCM) v1. Como lembrete, a Google deixará de dar suporte ao HTTP herdado do FCM em 20 de junho de 2024, portanto, antes dessa data, você deve migrar seus aplicativos e conteúdos de notificação para o novo formato. Todos os métodos de integração estarão prontos para migração até 1º de março de 2024.

Importante

A partir de junho de 2024, as APIs legadas do FCM não terão mais suporte e serão descontinuadas. Para evitar qualquer interrupção no seu serviço de notificação push, você deve migrar para o protocolo FCM v1 o mais rápido possível.

Conceitos do FCM v1

  • Um novo tipo de plataforma chamado FCM v1 tem suporte.
  • Novas APIs, credenciais, instalações e registros são usados para o FCM v1.

Observação

A plataforma FCM existente é conhecida como FCM herdado neste artigo.

Etapas da migração

A API herdada do FCM (Firebase Cloud Messaging) será preterida até julho de 2024. Em 1º de março de 2024, você poderá começar a migrar do protocolo HTTP herdado para o FCM v1. É necessário concluir a migração até junho de 2024. Esta seção descreve as etapas para migrar do FCM herdado para o FCM v1 usando a API REST dos Hubs de Notificação.

API REST

A seção a seguir descreve como executar a migração usando a API REST.

Etapa 1: adicionar credenciais do FCM v1 ao hub

A primeira etapa é adicionar credenciais pelo portal do Azure, por uma operação de hub de plano de gerenciamento ou pelo hub de plano de dados.

Criar arquivo JSON da conta de serviço do Google

  1. No Console do Firebase, selecione seu projeto e Acesse Configurações do Projeto.

  2. Selecione a guia Contas de serviço, crie uma conta de serviço e gere uma chave privada da sua conta de serviço do Google.

  3. Selecione Gerar nova chave privada para gerar um arquivo JSON. Baixe e abra o arquivo. Substitua os valores de project_id, private_keye client_email, pois eles são necessários para atualizar as credenciais do hub dos Hubs de Notificação do Azure.

    Captura de tela das configurações do projeto do console do Firebase.

    OR

    Se você quiser criar uma conta de serviço com permissão de acesso personalizada, poderá criar uma conta de serviço pela página Contas de serviço do > IAM e Administrador. Acesse a página diretamente clicando em Gerenciar as permissões da conta de serviço. Você pode criar uma conta de serviço que tenha uma das seguintes funções:

    • Administrador do Firebase (roles/firebase.admin)
    • Administrador do Firebase Grow (roles/firebase.growthAdmin)
    • Agente de Serviço de Administrador do SDK do Administrador do Firebase (roles/firebase.sdkAdminServiceAgent)
    • Agente do Serviço de Provisionamento do SDK do Firebase (roles/firebase.sdkProvisioningServiceAgent)

    Captura de tela mostrando as configurações da conta de serviço do IAM.

Opção 1: atualizar as credenciais do FcmV1 pelo portal do Azure

Acesse o hub de notificação no portal do Azure e selecione Configurações > Google (FCM v1). Obtenha os valores Chave Privada, ID do Projeto e Email do Cliente do arquivo JSON da conta de serviço adquirido da seção anterior e salve-os para usar posteriormente.

Captura de tela mostrando as opções de credenciais do Firebase do portal do Azure.

Opção 2: atualizar as credenciais do FcmV1 pela operação do hub do plano de gerenciamento

Veja a descrição de uma FcmV1Credential do NotificationHub.

  • Usar a versão da API: 2023-10-01-preview

  • FcmV1CredentialProperties:

    Nome Type
    clientEmail string
    privateKey string
    projectId string

Opção 3: atualizar as credenciais do FcmV1 pela operação do hub do plano de dados

Consulte Criar um hub de notificação e Atualizar um hub de notificação.

  • Usar a versão da API 2015-01
  • Certifique-se de colocar FcmV1Credential depois de GcmCredential, pois a ordem é importante.

Por exemplo, o corpo da solicitação é o seguinte:

<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>

Etapa 2: gerenciar o registro e a instalação

Quanto aos cenários de envio direto, prossiga diretamente para a Etapa 3. Se você estiver usando um dos SDKs do Azure, consulte o Artigo dos SDKs.

Opção 1: criar registro do FCM v1 ou atualizar o registro do GCM para FCM v1

Se você tiver um registro GCM existente, atualize o registro para FcmV1Registration. Consulte Criar ou atualizar um registro. Se você não tiver um GcmRegistration existente, crie um novo registro como FcmV1Registration. Consulte Criar um registro. O corpo da solicitação de registro deve aparecer como no exemplo a seguir:

// 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>

Opção 2: criar a instalação do FCM c1 ou atualizar a instalação do GCM para FCM v1

Consulte Criar ou substituir uma instalação e definir platform como FCMV1.

Etapa 3: enviar uma notificação por push

Opção 1: enviar depuração

Use este procedimento para testar as notificações antes das Opções 2, 3 ou 4. Consulte Hubs de Notificação – Enviar Depuração.

Observação

Use a versão da API: 2023-10-01-preview.

No cabeçalho:

Cabeçalho da solicitação Valor
Content-Type application/json;charset=utf-8
ServiceBusNotification-Format Definir como fcmV1 ou template
Servicebusnotification-Tags {identificador de marca única}

Teste um conteúdo com a estrutura a seguir pelo envio de depuração. Observe que o FcmV1 apresenta uma alteração significativa na estruturação do conteúdo da mensagem JSON:

  1. Toda a carga movida sob um objeto de mensagem.
  2. Opções específicas do Android movidas para o objeto do Android e time_to_live já está ttl com um valor de cadeia de caracteres.
  3. O campo data já permite apenas um mapeamento de cadeia de caracteres simples para a cadeia de caracteres.
  4. Para obter mais informações, consulte Referência do FCM.

Como alternativa, você pode executar um envio de teste (envio de depuração) pelo portal do Azure:

Captura de tela mostrando a página de envio de teste do portal do Azure.

Opção 2: envio direto

Executar um envio direto. No cabeçalho da solicitação, defina ServiceBusNotification-Format como fcmV1.

Opção 3: notificação nativa do FcmV1 (envio de público)

Execute um envio de notificação nativa do FcmV1. Consulte Enviar uma notificação nativa do Google Cloud Messaging (GCM). No cabeçalho da solicitação, defina ServiceBusNotification-Format como fcmV1. Por exemplo, no corpo da solicitação:

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

Opção 4: notificação de modelo

Você pode testar os envios de modelo com um novo corpo de solicitação após a nova estrutura de conteúdo JSON. Não é necessário fazer outras alterações. Consulte Enviar uma notificação de modelo.

Próximas etapas

Migração do Firebase Cloud Messaging usando os SDKs do Azure