Udostępnij za pośrednictwem


Migracja usługi Google Firebase Cloud Messaging przy użyciu zestawów SDK platformy Azure

Firma Google wycofa starszy interfejs API Firebase Cloud Messaging (FCM) do lipca 2024 r. Migrację ze starszego protokołu HTTP do usługi FCM w wersji 1 można rozpocząć 1 marca 2024 r. Migrację należy ukończyć do czerwca 2024 r. W tej sekcji opisano kroki migracji ze starszej wersji usługi FCM do usługi FCM w wersji 1 przy użyciu zestawów SDK platformy Azure.

Ważne

Od czerwca 2024 r. starsze interfejsy API usługi FCM nie będą już obsługiwane i zostaną wycofane. Aby uniknąć zakłóceń w usłudze powiadomień wypychanych, należy przeprowadzić migrację do protokołu FCM v1 tak szybko, jak to możliwe.

Wymagania wstępne

  • Upewnij się, że interfejs API usługi Firebase Cloud Messaging (V1) jest włączony w ustawieniu projektu Firebase w obszarze Cloud Messaging.
  • Upewnij się, że poświadczenia usługi FCM są aktualizowane. Wykonaj krok 1 w przewodniku po interfejsie API REST.

Android SDK

  1. Zaktualizuj wersję zestawu SDK do 2.0.0 w pliku build.gradle aplikacji. Na przykład:

    // 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. Zaktualizuj szablon ładunku. Jeśli nie używasz szablonów, możesz pominąć ten krok.

    Zapoznaj się z dokumentacją REST usługi FCM dla struktury ładunku usługi FCM w wersji 1. Aby uzyskać informacje na temat migracji ze starszego ładunku usługi FCM do ładunku fcM w wersji 1, zobacz Aktualizowanie ładunku żądań wysyłania.

    Jeśli na przykład używasz rejestracji:

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

    Jeśli używasz instalacji:

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

Zestawy SDK serwera (płaszczyzna danych)

  1. Zaktualizuj pakiet zestawu SDK do najnowszej wersji (4.2.0):

    Nazwa usługi GitHub zestawu SDK Nazwa pakietu zestawu SDK Wersja
    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

    Na przykład w pliku csproj :

    <PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
    
  2. Dodaj element FcmV1Credential do centrum powiadomień. Ten krok jest jednorazową konfiguracją. Jeśli nie masz wielu centrów i chcesz zautomatyzować ten krok, możesz użyć interfejsu API REST lub witryny Azure Portal, aby dodać poświadczenia usługi FCM w wersji 1:

    // 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. Zarządzanie rejestracjami i instalacjami. W przypadku rejestracji użyj polecenia FcmV1RegistrationDescription , aby zarejestrować urządzenia FCM w wersji 1. Na przykład:

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

    W przypadku języka Java użyj polecenia FcmV1Registration , aby zarejestrować urządzenia FCMv1:

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

    W przypadku języka JavaScript użyj polecenia createFcmV1RegistrationDescription , aby zarejestrować urządzenia FCMv1:

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

    W przypadku instalacji użyj jako NotificationPlatform.FcmV1 platformy z Installationprogramem lub użyj polecenia FcmV1Installation , aby utworzyć instalacje usługi FCM w wersji 1:

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

    W przypadku języka Java użyj jako NotificationPlatform.FcmV1 platformy:

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

    W przypadku języka JavaScript użyj polecenia createFcmV1Installation , aby utworzyć instalację 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);
    

    Zwróć uwagę na następujące zagadnienia:

    • Jeśli rejestracja urządzenia odbywa się w aplikacji klienckiej, najpierw zaktualizuj aplikację kliencka, aby zarejestrować się na platformie FCMv1.
    • Jeśli rejestracja urządzenia odbywa się na serwerze, możesz pobrać wszystkie rejestracje/instalacje i zaktualizować je do serwera FCMv1.
  4. Wyślij powiadomienie do usługi FCMv1. Użyj FcmV1Notification polecenia podczas wysyłania powiadomień, które są przeznaczone dla maszyny wirtualnej FCMv1. Na przykład:

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

Następne kroki

Migracja usługi Firebase Cloud Messaging przy użyciu interfejsu API REST