Migrazione di Google Firebase Cloud Messaging con Azure SDK
Google deprecherà l'API legacy Firebase Cloud Messaging (FCM) 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 gli SDK di Azure.
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.
Prerequisiti
- Assicurarsi che l'API Firebase Cloud Messaging (V1) sia abilitata nell'impostazione del progetto Firebase in Messaggistica cloud.
- Assicurarsi che le credenziali FCM siano aggiornate. Seguire il passaggio 1 nella guida all'API REST.
Android SDK
Aggiornare la versione dell'SDK a
2.0.0
nel file build.gradle dell'applicazione. Ad esempio:// This is not a complete build.gradle file; it only highlights the portions you need to update. dependencies { // Ensure the following line is updated in your app/library's "dependencies" section. implementation 'com.microsoft.azure:notification-hubs-android-sdk:2.0.0' // optionally, use the fcm optimized SKU instead: // implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:2.0.0' }
Aggiornare il modello di payload. Se non si usano modelli, è possibile ignorare questo passaggio.
Vedere le informazioni di riferimento su FCM REST per la struttura del payload FCM v1. Per informazioni sulla migrazione dal payload legacy FCM al payload FCM v1, vedere Aggiornare il payload delle richieste di invio.
Ad esempio, se si usano registrazioni:
NotificationHub hub = new NotificationHub(BuildConfig.hubName, BuildConfig.hubListenConnectionString, context); String template = "{\"message\":{\"android\":{\"data\":{\"message\":\"{'Notification Hub test notification: ' + $(myTextProp)}\"}}}}"; hub.registerTemplate(token, "template-name", template);
Se si usano installazioni:
InstallationTemplate testTemplate = new InstallationTemplate(); testTemplate.setBody("{\"message\":{\"android\":{\"data\":{\"message\":\"{'Notification Hub test notification: ' + $(myTextProp)}\"}}}}"); NotificationHub.setTemplate("testTemplate", testTemplate);
SDK server (piano dati)
Aggiornare il pacchetto SDK alla versione più recente (4.2.0):
Nome GitHub SDK Nome pacchetto SDK Versione azure-notificationhubs-dotnet Microsoft.Azure.NotificationHubs 4.2.0 azure-notificationhubs-java-backend com.windowsazure.Notification-Hubs-java-sdk 1.1.0 azure-sdk-for-js @azure/notification-hubs 1.1.0 Ad esempio, nel file con estensione csproj :
<PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
Aggiungere l'oggetto
FcmV1Credential
all'hub di notifica. Questo passaggio è una configurazione monouso. A meno che non si disponga di molti hub e si voglia automatizzare questo passaggio, è possibile usare l'API REST o il portale di Azure per aggiungere le credenziali FCM v1:// Create new notification hub with FCM v1 credentials var hub = new NotificationHubDescription("hubname"); hub.FcmV1Credential = new FcmV1Credential("private-key", "project-id", "client-email"); hub = await namespaceManager.CreateNotificationHubAsync(hub); // Update existing notification hub with FCM v1 credentials var hub = await namespaceManager.GetNotificationHubAsync("hubname", CancellationToken.None); hub.FcmV1Credential = new FcmV1Credential("private-key", "project-id", "client-email"); hub = await namespaceManager.UpdateNotificationHubAsync(hub, CancellationToken.None);
// Create new notification hub with FCM V1 credentials NamespaceManager namespaceManager = new NamespaceManager(namespaceConnectionString); NotificationHubDescription hub = new NotificationHubDescription("hubname"); hub.setFcmV1Credential(new FcmV1Credential("private-key", "project-id", "client-email")); hub = namespaceManager.createNotificationHub(hub); // Updating existing Notification Hub with FCM V1 Credentials NotificationHubDescription hub = namespaceManager.getNotificationHub("hubname"); hub.setFcmV1Credential(new FcmV1Credential("private-key", "project-id", "client-email")); hub = namespaceManager.updateNotificationHub(hub);
Gestire registrazioni e installazioni. Per le registrazioni, usare
FcmV1RegistrationDescription
per registrare i dispositivi FCM v1. Ad esempio:// Create new Registration var deviceToken = "device-token"; var tags = new HashSet<string> { "tag1", "tag2" }; FcmV1RegistrationDescription registration = await hub. CreateFcmV1NativeRegistrationAsync(deviceToken, tags);
Per Java, usare
FcmV1Registration
per registrare i dispositivi FCMv1:// Create new registration NotificationHub client = new NotificationHub(connectionString, hubName); FcmV1Registration registration = client.createRegistration(new FcmV1Registration("fcm-device-token"));
Per JavaScript, usare
createFcmV1RegistrationDescription
per registrare i dispositivi FCMv1:// Create FCM V1 registration const context = createClientContext(connectionString, hubName); const registration = createFcmV1RegistrationDescription({ fcmV1RegistrationId: "device-token", }); const registrationResponse = await createRegistration(context, registration);
Per le installazioni, usare
NotificationPlatform.FcmV1
come piattaforma conInstallation
o perFcmV1Installation
creare installazioni FCM v1:// Create new installation var installation = new Installation { InstallationId = "installation-id", PushChannel = "device-token", Platform = NotificationPlatform.FcmV1 }; await hubClient.CreateOrUpdateInstallationAsync(installation); // Alternatively, you can use the FcmV1Installation class directly var installation = new FcmV1Installation("installation-id", "device-token"); await hubClient.CreateOrUpdateInstallationAsync(installation);
Per Java, usare
NotificationPlatform.FcmV1
come piattaforma:// Create new installation NotificationHub client = new NotificationHub(connectionString, hubName); client.createOrUpdateInstallation(new Installation("installation-id", NotificationPlatform.FcmV1, "device-token"));
Per JavaScript, usare
createFcmV1Installation
per creare un'installazione FCMv1:// Create FCM V1 installation const context = createClientContext(connectionString, hubName); const installation = createFcmV1Installation({ installationId: "installation-id", pushChannel: "device-token", }); const result = await createOrUpdateInstallation(context, installation);
Tenere presenti le considerazioni seguenti:
- Se la registrazione del dispositivo avviene nell'app client, aggiornare prima l'app client per eseguire la registrazione nella piattaforma FCMv1.
- Se la registrazione del dispositivo avviene nel server, è possibile recuperare tutte le registrazioni/installazioni e aggiornarle a FCMv1 nel server.
Inviare la notifica a FCMv1. Usare
FcmV1Notification
quando si inviano notifiche destinate a FCMv1. Ad esempio:// Send FCM v1 notification var jsonBody = "{\"message\":{\"android\":{\"data\":{\"message\":\"Notification Hub test notification\"}}}}"; var n = new FcmV1Notification(jsonBody); NotificationOutcome outcome = await hub.SendNotificationAsync(n, "tag");
// Send FCM V1 Notification NotificationHub client = new NotificationHub(connectionString, hubName); NotificationOutcome outcome = client.sendNotification(new FcmV1Notification("{\"message\":{\"android\":{\"data\":{\"message\":\"Notification Hub test notification\"}}}}"));
// Send FCM V1 Notification const context = createClientContext(connectionString, hubName); const messageBody = `{ "message": { "android": { "data": { "message": "Notification Hub test notification" } } } }`; const notification = createFcmV1Notification({ body: messageBody, }); const result = await sendNotification(context, notification);