Google Firebase Cloud Messaging-migrering med Hjälp av Azure SDK:er
Google kommer att inaktuella det äldre API:et Firebase Cloud Messaging (FCM) i juli 2024. Du kan börja migrera från det äldre HTTP-protokollet till FCM v1 den 1 mars 2024. Du måste slutföra migreringen i juni 2024. I det här avsnittet beskrivs stegen för att migrera från FCM-äldre till FCM v1 med hjälp av Azure SDK:er.
Viktigt!
Från och med juni 2024 kommer FCM-äldre API:er inte längre att stödjas och kommer att dras tillbaka. För att undvika störningar i push-meddelandetjänsten måste du migrera till FCM v1-protokollet så snart som möjligt.
Förutsättningar
- Kontrollera att Firebase Cloud Messaging API (V1) är aktiverat i Firebase-projektinställningen under Cloud Messaging.
- Kontrollera att FCM-autentiseringsuppgifterna uppdateras. Följ steg 1 i REST API-guiden.
Android SDK
Uppdatera SDK-versionen till
2.0.0
i filen build.gradle i ditt program. Till exempel:// 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' }
Uppdatera nyttolastmallen. Om du inte använder mallar kan du hoppa över det här steget.
Se FCM REST-referensen för FCM v1-nyttolaststrukturen. Information om hur du migrerar från den äldre FCM-nyttolasten till FCM v1-nyttolasten finns i Uppdatera nyttolasten för sändningsbegäranden.
Om du till exempel använder registreringar:
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);
Om du använder installationer:
InstallationTemplate testTemplate = new InstallationTemplate(); testTemplate.setBody("{\"message\":{\"android\":{\"data\":{\"message\":\"{'Notification Hub test notification: ' + $(myTextProp)}\"}}}}"); NotificationHub.setTemplate("testTemplate", testTemplate);
Server-SDK:er (dataplan)
Uppdatera SDK-paketet till den senaste versionen (4.2.0):
SDK GitHub-namn SDK-paketnamn Version 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 Till exempel i .csproj-filen :
<PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
Lägg till i
FcmV1Credential
meddelandehubben. Det här steget är en engångskonfiguration. Om du inte har många hubbar och vill automatisera det här steget kan du använda REST-API:et eller Azure-portalen för att lägga till autentiseringsuppgifterna för 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);
Hantera registreringar och installationer. För registreringar använder du
FcmV1RegistrationDescription
för att registrera FCM v1-enheter. Till exempel:// Create new Registration var deviceToken = "device-token"; var tags = new HashSet<string> { "tag1", "tag2" }; FcmV1RegistrationDescription registration = await hub. CreateFcmV1NativeRegistrationAsync(deviceToken, tags);
För Java använder du
FcmV1Registration
för att registrera FCMv1-enheter:// Create new registration NotificationHub client = new NotificationHub(connectionString, hubName); FcmV1Registration registration = client.createRegistration(new FcmV1Registration("fcm-device-token"));
För JavaScript använder du
createFcmV1RegistrationDescription
för att registrera FCMv1-enheter:// Create FCM V1 registration const context = createClientContext(connectionString, hubName); const registration = createFcmV1RegistrationDescription({ fcmV1RegistrationId: "device-token", }); const registrationResponse = await createRegistration(context, registration);
För installationer använder
NotificationPlatform.FcmV1
du som plattform medInstallation
eller använderFcmV1Installation
för att skapa FCM v1-installationer:// 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);
För Java använder du
NotificationPlatform.FcmV1
som plattform:// Create new installation NotificationHub client = new NotificationHub(connectionString, hubName); client.createOrUpdateInstallation(new Installation("installation-id", NotificationPlatform.FcmV1, "device-token"));
För JavaScript använder du
createFcmV1Installation
för att skapa en FCMv1-installation:// Create FCM V1 installation const context = createClientContext(connectionString, hubName); const installation = createFcmV1Installation({ installationId: "installation-id", pushChannel: "device-token", }); const result = await createOrUpdateInstallation(context, installation);
Observera följande överväganden:
- Om enhetsregistreringen sker i klientappen uppdaterar du klientappen först så att den registreras under FCMv1-plattformen.
- Om enhetsregistreringen sker på servern kan du hämta alla registreringar/installationer och uppdatera dem till FCMv1 på servern.
Skicka meddelandet till FCMv1. Använd
FcmV1Notification
när du skickar meddelanden som är avsedda för FCMv1. Till exempel:// 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);