Delen via


Migratie van Google Firebase Cloud Messaging met behulp van Azure SDK's

Google zal de verouderde API van Firebase Cloud Messaging (FCM) tegen juli 2024 afgeschaft. U kunt beginnen met migreren van het verouderde HTTP-protocol naar FCM v1 op 1 maart 2024. U moet de migratie uiterlijk juni 2024 voltooien. In deze sectie worden de stappen beschreven voor het migreren van FCM verouderd naar FCM v1 met behulp van de Azure SDK's.

Belangrijk

Vanaf juni 2024 worden verouderde FCM-API's niet meer ondersteund en buiten gebruik gesteld. Om onderbrekingen in uw pushmeldingsservice te voorkomen, moet u zo snel mogelijk migreren naar het FCM v1-protocol .

Vereisten

  • Zorg ervoor dat Firebase Cloud Messaging API (V1) is ingeschakeld in de Firebase-projectinstelling onder Cloud Messaging.
  • Zorg ervoor dat FCM-referenties zijn bijgewerkt. Volg stap 1 in de REST API-handleiding.

Android-SDK

  1. Werk de SDK-versie bij naar 2.0.0 het build.gradle-bestand van uw toepassing. Voorbeeld:

    // 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' 
    }
    
  2. Werk de nettoladingsjabloon bij. Als u geen sjablonen gebruikt, kunt u deze stap overslaan.

    Zie de FCM REST-verwijzing voor de FCM v1-nettoladingstructuur. Zie De nettolading van verzendaanvragen bijwerken voor informatie over het migreren van de verouderde FCM-nettolading naar de FCM v1-nettolading.

    Als u bijvoorbeeld registraties gebruikt:

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

    Als u installaties gebruikt:

    InstallationTemplate testTemplate = new InstallationTemplate(); 
    testTemplate.setBody("{\"message\":{\"android\":{\"data\":{\"message\":\"{'Notification Hub test notification: ' + $(myTextProp)}\"}}}}");  
    NotificationHub.setTemplate("testTemplate", testTemplate);
    

Server-SDK's (gegevensvlak)

  1. Werk het SDK-pakket bij naar de nieuwste versie (4.2.0):

    GitHub-naam voor SDK Sdk-pakketnaam Versie
    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

    Bijvoorbeeld in het .csproj-bestand :

    <PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
    
  2. Voeg de aan FcmV1Credential de Notification Hub toe. Deze stap is een eenmalige installatie. Tenzij u veel hubs hebt en deze stap wilt automatiseren, kunt u de REST API of Azure Portal gebruiken om de FCM v1-referenties toe te voegen:

    // 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);
    
  3. Registraties en installaties beheren. Voor registraties gebruikt FcmV1RegistrationDescription u om FCM v1-apparaten te registreren. Voorbeeld:

    // Create new Registration
    var deviceToken = "device-token"; 
    var tags = new HashSet<string> { "tag1", "tag2" }; 
    FcmV1RegistrationDescription registration = await hub. CreateFcmV1NativeRegistrationAsync(deviceToken, tags);
    

    Gebruik voor Java FcmV1Registration om FCMv1-apparaten te registreren:

    // Create new registration
    NotificationHub client = new NotificationHub(connectionString, hubName);
    FcmV1Registration registration =  client.createRegistration(new FcmV1Registration("fcm-device-token"));
    

    Gebruik createFcmV1RegistrationDescription voor JavaScript om FCMv1-apparaten te registreren:

    // Create FCM V1 registration
    const context = createClientContext(connectionString, hubName);
    const registration = createFcmV1RegistrationDescription({
      fcmV1RegistrationId: "device-token",
    });
    const registrationResponse = await createRegistration(context, registration);
    

    Voor installaties kunt NotificationPlatform.FcmV1 u het platform gebruiken met Installationof gebruiken FcmV1Installation om FCM v1-installaties te maken:

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

    Gebruik NotificationPlatform.FcmV1 voor Java als het platform:

    // Create new installation
    NotificationHub client = new NotificationHub(connectionString, hubName);
    client.createOrUpdateInstallation(new Installation("installation-id", NotificationPlatform.FcmV1, "device-token"));
    

    Gebruik createFcmV1Installation voor JavaScript om een FCMv1-installatie te maken:

    // Create FCM V1 installation
    const context = createClientContext(connectionString, hubName);
    const installation = createFcmV1Installation({
      installationId: "installation-id",
      pushChannel: "device-token",
    });
    const result = await createOrUpdateInstallation(context, installation);
    

    Let op de volgende overwegingen:

    • Als de apparaatregistratie plaatsvindt in de client-app, werkt u de client-app eerst bij om u te registreren onder het FCMv1-platform.
    • Als de apparaatregistratie op de server plaatsvindt, kunt u alle registraties/installaties ophalen en bijwerken naar FCMv1 op de server.
  4. Verzend de melding naar FCMv1. Gebruik FcmV1Notification deze opdracht wanneer u meldingen verzendt die zijn gericht op FCMv1. Voorbeeld:

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

Volgende stappen

Firebase Cloud Messaging-migratie met rest API