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
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' }
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)
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" />
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);
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 conInstallation
o useFcmV1Installation
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.
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