Compartir a través de


Migración de Google Firebase Cloud Messaging mediante los SDK de Azure

Google dejará de usar la API heredada de Firebase Cloud Messaging (FCM) en julio de 2024. Puede empezar a migrar desde el protocolo HTTP heredado a FCM v1 el 1 de marzo de 2024. Debe completar la migración en junio de 2024. En esta sección se describen los pasos para migrar de FCM heredado a FCM v1 mediante los SDK de Azure.

Importante

A partir de junio de 2024, las API heredadas de FCM ya no se admitirán y se retirarán. Para evitar cualquier interrupción en el servicio de notificaciones de inserción, debe migrar al protocolo FCM v1 lo antes posible.

Requisitos previos

  • Asegúrese de que Firebase Cloud Messaging API (V1) está habilitado en la configuración del proyecto Firebase en Cloud Messaging.
  • Asegúrese de que se actualizan las credenciales de FCM. Siga el paso 1 de la guía de API de REST.

SDK de Android

  1. Actualice la versión del SDK a 2.0.0 en el archivo build.gradle de la aplicación. Por ejemplo:

    // 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. Actualice la plantilla de carga. Si no usa plantillas, puede omitir este paso.

    Consulte la referencia de REST de FCM para ver la estructura de carga de FCM v1. Para obtener información sobre cómo migrar desde la carga de FCM heredada a la carga de FCM v1, consulte Actualización de la carga de las solicitudes de envío.

    Por ejemplo, si usa registros:

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

    Si usa instalaciones:

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

SDK de servidor (plano de datos)

  1. Actualice el paquete del SDK a la versión más reciente (4.2.0):

    Nombre de GitHub del SDK Nombre del paquete de SDK Versión
    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

    Por ejemplo, en el archivo .csproj:

    <PackageReference Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
    
  2. Agregue FcmV1Credential al centro de notificaciones. Este paso de configuración solo se realiza una vez. A menos que tenga muchos centros y quiera automatizar este paso, puede usar la API de REST o Azure Portal para agregar las credenciales de 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);
    
  3. Administre los registros e instalaciones. Para los registros, use FcmV1RegistrationDescription para registrar dispositivos FCM v1. Por ejemplo:

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

    Para Java, use FcmV1Registration para registrar dispositivos FCMv1:

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

    Para JavaScript, use createFcmV1RegistrationDescription para registrar dispositivos FCMv1:

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

    Para las instalaciones, use NotificationPlatform.FcmV1 como plataforma con Installation o use FcmV1Installation para crear instalaciones de 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);
    

    Para Java, use NotificationPlatform.FcmV1 como plataforma:

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

    Para JavaScript, use createFcmV1Installation para crear una instalación de 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);
    

    Tenga en cuenta las siguientes consideraciones:

    • Si el registro del dispositivo se produce en la aplicación cliente, actualice primero la aplicación cliente para registrarse en la plataforma FCMv1.
    • Si el registro del dispositivo se produce en el servidor, puede capturar todos los registros o instalaciones y actualizarlos a FCMv1 en el servidor.
  4. Envíe la notificación a FCMv1. Use FcmV1Notification al enviar notificaciones destinadas a FCMv1. Por ejemplo:

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

Pasos siguientes

Migración de Firebase Cloud Messaging mediante la API de REST