Google Firebase Cloud Messaging-Migration mit Azure SDKs
Google stellt die Legacy-API für Firebase Cloud Messaging (FCM) im Juli 2024 ein. Sie können am 1. März 2024 mit der Migration vom Legacy HTTP-Protokoll zu FCM v1 beginnen. Sie müssen die Migration bis Juni 2024 abschließen. In diesem Abschnitt werden die Schritte zum Migrieren von FCM-Legacy zu FCM v1 mithilfe der Azure SDKs beschrieben.
Wichtig
Ab Juni 2024 werden FCM-Legacy-APIs nicht mehr unterstützt und eingestellt. Um Unterbrechungen in Ihrem Pushbenachrichtigungsdienst zu vermeiden, müssen Sie so schnell wie möglich zum FCM v1-Protokoll migrieren.
Voraussetzungen
- Stellen Sie sicher, dass die Firebase Cloud Messaging-API (V1) in den Firebase-Projekteinstellungen unter Cloud Messaging aktiviert ist.
- Stellen Sie sicher, dass die FCM-Anmeldeinformationen aktualisiert wurden. Befolgen Sie Schritt 1 im REST-API-Leitfaden.
Android-SDK
Aktualisieren Sie die SDK-Version in der Datei build.gradle Ihrer Anwendung auf
2.0.0
. Beispiel:// 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' }
Aktualisieren Sie die Payloadvorlage. Wenn Sie keine Vorlagen verwenden, können Sie diesen Schritt überspringen.
Die FCM v1-Payloadstruktur finden Sie in der FCM REST-Referenz. Informationen zum Migrieren von der FCM-Legacy-Payload zur FCM v1-Payload finden Sie unter Aktualisieren Sie die Nutzlast von Sendeanfragen.
Wenn Sie z. B. Registrierungen verwenden:
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);
Wenn Sie Installationen verwenden:
InstallationTemplate testTemplate = new InstallationTemplate(); testTemplate.setBody("{\"message\":{\"android\":{\"data\":{\"message\":\"{'Notification Hub test notification: ' + $(myTextProp)}\"}}}}"); NotificationHub.setTemplate("testTemplate", testTemplate);
Server-SDKs (Datenebene)
Aktualisieren Sie das SDK-Paket auf die neueste Version (4.2.0):
GitHub-Name des SDKs Paketname des SDKs 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 Beispiel anhand der CSPROJ-Datei:
<PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
Fügen Sie
FcmV1Credential
dem Notification Hub hinzu. Dieser Schritt umfasst ein einmaliges Setup. Sofern Sie nicht über viele Hubs verfügen und diesen Schritt automatisieren möchten, können Sie die REST-API oder das Azure-Portal verwenden, um die FCM v1-Anmeldeinformationen hinzuzufügen:// 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);
Verwalten Sie Registrierungen und Installationen. Verwenden Sie für Registrierungen
FcmV1RegistrationDescription
, um FCM v1-Geräte zu registrieren. Beispiel:// Create new Registration var deviceToken = "device-token"; var tags = new HashSet<string> { "tag1", "tag2" }; FcmV1RegistrationDescription registration = await hub. CreateFcmV1NativeRegistrationAsync(deviceToken, tags);
Verwenden Sie für Java
FcmV1Registration
, um FCMv1-Geräte zu registrieren:// Create new registration NotificationHub client = new NotificationHub(connectionString, hubName); FcmV1Registration registration = client.createRegistration(new FcmV1Registration("fcm-device-token"));
Verwenden Sie für JavaScript
createFcmV1RegistrationDescription
, um FCMv1-Geräte zu registrieren:// Create FCM V1 registration const context = createClientContext(connectionString, hubName); const registration = createFcmV1RegistrationDescription({ fcmV1RegistrationId: "device-token", }); const registrationResponse = await createRegistration(context, registration);
Verwenden Sie für Installationen
NotificationPlatform.FcmV1
als Plattform mitInstallation
, oder verwenden SieFcmV1Installation
, um FCM v1-Installationen zu erstellen:// 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);
Verwenden Sie für Java
NotificationPlatform.FcmV1
als Plattform:// Create new installation NotificationHub client = new NotificationHub(connectionString, hubName); client.createOrUpdateInstallation(new Installation("installation-id", NotificationPlatform.FcmV1, "device-token"));
Verwenden Sie für JavaScript
createFcmV1Installation
, um eine FCMv1-Installation zu erstellen:// Create FCM V1 installation const context = createClientContext(connectionString, hubName); const installation = createFcmV1Installation({ installationId: "installation-id", pushChannel: "device-token", }); const result = await createOrUpdateInstallation(context, installation);
Beachten Sie die folgenden Überlegungen:
- Wenn die Geräteregistrierung in der Client-App erfolgt, aktualisieren Sie die Client-App zuerst, um sich unter der FCMv1-Plattform zu registrieren.
- Wenn die Geräteregistrierung auf dem Server erfolgt, können Sie alle Registrierungen/Installationen abrufen und auf dem Server auf FCMv1 aktualisieren.
Senden Sie die Benachrichtigung an FCMv1. Verwenden Sie
FcmV1Notification
, wenn Sie Benachrichtigungen für FCMv1 senden. Beispiel:// 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);