Migrazione di Google Firebase Cloud Messaging tramite l'API REST e l'portale di Azure

Questo articolo descrive le funzionalità di base per l'integrazione di Hub di notifica di Azure con Firebase Cloud Messaging (FCM) v1. Come promemoria, Google smetterà di supportare HTTP legacy FCM il 20 giugno 2024, quindi è necessario eseguire la migrazione delle applicazioni e dei payload di notifica al nuovo formato prima di allora. Tutti i metodi di onboarding saranno pronti per la migrazione entro il 1° marzo 2024.

Importante

A partire da giugno 2024, le API legacy FCM non saranno più supportate e verranno ritirati. Per evitare interruzioni nel servizio di notifica push, è necessario eseguire la migrazione al protocollo FCM v1 il prima possibile.

Concetti relativi a FCM v1

  • È supportato un nuovo tipo di piattaforma, denominato FCM v1.
  • Le nuove API, le credenziali, le registrazioni e le installazioni vengono usate per FCM v1.

Nota

La piattaforma FCM esistente viene definita legacy FCM in questo articolo.

Passaggi per la migrazione

L'API legacy Firebase Cloud Messaging (FCM) sarà deprecata entro luglio 2024. È possibile iniziare la migrazione dal protocollo HTTP legacy a FCM v1 il 1° marzo 2024. È necessario completare la migrazione entro giugno 2024. Questa sezione descrive i passaggi per eseguire la migrazione da FCM legacy a FCM v1 usando l'API REST di Hub di notifica.

REST API

La sezione seguente descrive come eseguire la migrazione usando l'API REST.

Passaggio 1: Aggiungere credenziali FCM v1 all'hub

Il primo passaggio consiste nell'aggiungere credenziali tramite l'portale di Azure, un'operazione dell'hub del piano di gestione o un'operazione dell'hub del piano dati.

Creare un file JSON dell'account del servizio Google

  1. Nella console firebase selezionare il progetto e passare a Impostazioni progetto.

  2. Selezionare la scheda Account di servizio , creare un account del servizio e generare una chiave privata dall'account del servizio Google.

  3. Selezionare Genera nuova chiave privata per generare un file JSON. Scaricare e aprire il file. Sostituire i valori per project_id, private_keye client_email, perché sono necessari per gli aggiornamenti delle credenziali dell'hub di notifica di Azure.

    Screenshot delle impostazioni del progetto console Firebase.

    OPPURE

    Se si vuole creare un account del servizio con autorizzazioni di accesso personalizzate, è possibile creare un account di servizio tramite la pagina Account di servizio IAM & Amministrazione>. Passare direttamente alla pagina facendo clic su Gestisci autorizzazioni dell'account del servizio. È possibile creare un account del servizio con uno dei ruoli seguenti:

    • Amministrazione Firebase (roles/firebase.admin)
    • Firebase Grow Amministrazione (roles/firebase.growth Amministrazione)
    • Agente del servizio Firebase Amministrazione SDK Amministrazione istrator (roles/firebase.sdk Amministrazione ServiceAgent)
    • Agente del servizio di provisioning di Firebase SDK (roles/firebase.sdkProvisioningServiceAgent)

    Screenshot che mostra le impostazioni dell'account del servizio IAM.

Opzione 1: Aggiornare le credenziali FcmV1 tramite il portale di Azure

Passare all'hub di notifica nel portale di Azure e selezionare Impostazioni > Google (FCM v1). Ottenere i valori Chiave privata, ID progetto e Posta elettronica client dal file JSON dell'account del servizio acquisito dalla sezione precedente e salvarli per usarli in un secondo momento.

Screenshot che mostra portale di Azure opzioni delle credenziali firebase.

Opzione 2: Aggiornare le credenziali FcmV1 tramite l'operazione dell'hub del piano di gestione

Vedere la descrizione di un oggetto NotificationHub FcmV1Credential.

  • Usare la versione API: 2023-10-01-preview

  • FcmV1CredentialProperties:

    Nome Type
    clientEmail string
    privateKey string
    projectId string

Opzione 3: Aggiornare le credenziali FcmV1 tramite l'operazione dell'hub del piano dati

Vedere Creare un hub di notifica e Aggiornare un hub di notifica.

  • Usare la versione API: 2015-01
  • Assicurarsi di inserire FcmV1Credential dopo GcmCredential, perché l'ordine è importante.

Ad esempio, il corpo della richiesta è il seguente:

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

Passaggio 2: Gestire la registrazione e l'installazione

Per gli scenari di invio diretto, procedere direttamente al passaggio 3. Se si usa uno degli SDK di Azure, vedere l'articolo SDK.

Opzione 1: Creare la registrazione FCM v1 o aggiornare la registrazione GCM in FCM v1

Se si dispone di una registrazione GCM esistente, aggiornare la registrazione a FcmV1Registration. Vedere Creare o aggiornare una registrazione. Se non si dispone di un GcmRegistration esistente, creare una nuova registrazione come FcmV1Registration. Vedere Creare una registrazione. Il corpo della richiesta di registrazione dovrebbe essere visualizzato come nell'esempio seguente:

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

Opzione 2: Creare l'installazione di FCM c1 o aggiornare l'installazione di GCM in FCM v1

Vedere Creare o sovrascrivere un'installazione e impostare su platformFCMV1.

Passaggio 3: Inviare una notifica push

Opzione 1: Eseguire il debug dell'invio

Utilizzare questa procedura per testare le notifiche prima dell'opzione 2, 3 o 4. Vedere Hub di notifica - Invio di debug.

Nota

Usare la versione API: 2023-10-01-preview.

Nell'intestazione:

Intestazione della richiesta Valore
Content-Type application/json;charset=utf-8
ServiceBusNotification-Format Impostare su fcmV1 o template
Servicebusnotification-Tags {identificatore di tag singolo}

Testare un payload con la struttura seguente tramite l'invio di debug. Si noti che FcmV1 introduce una modifica significativa nella strutturazione del payload del messaggio JSON:

  1. L'intero payload è stato spostato in un oggetto messaggio.
  2. Le opzioni specifiche di Android sono state spostate nell'oggetto Android ed time_to_live è ora ttl con un valore stringa.
  3. Il data campo consente ora solo un mapping di stringhe a stringa flat.
  4. Per altre informazioni, vedere le informazioni di riferimento su FCM.

In alternativa, è possibile eseguire un invio di test (invio di debug) tramite il portale di Azure:

Screenshot che mostra portale di Azure pagina di invio di test.

Opzione 2: Invio diretto

Eseguire un invio diretto. Nell'intestazione della richiesta impostare su ServiceBusNotification-FormatfcmV1.

Opzione 3: Notifica nativa FcmV1 (invio destinatari)

Eseguire un invio di notifica nativa FcmV1. Vedere Inviare una notifica nativa di Google Cloud Messaging (GCM). Nell'intestazione della richiesta impostare su ServiceBusNotification-FormatfcmV1. Ad esempio, nel corpo della richiesta:

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

Opzione 4: notifica del modello

È possibile testare gli invii di modelli con un nuovo corpo della richiesta dopo la nuova struttura del payload JSON. Non è necessario apportare altre modifiche. Vedere Inviare una notifica modello.

Passaggi successivi

Migrazione di Firebase Cloud Messaging con Azure SDK