es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo enviar mensajes SNS a muchos tokens FCM sin crear puntos finales?

Estoy tratando de entender cómo enviar un mensaje a varios clientes de FCM desde Lambda, utilizando el servicio SNS. Todos los recursos que encontré se refieren a la creación de un Endpoint de Aplicación SNS para el token de dispositivo deseado, pero no entiendo este enfoque. Si tengo miles de dispositivos, y sus tokens pueden cambiar (ya tengo un mecanismo para anunciar nuevos tokens y guardarlos en DynamoDB desarrollado), ¿debo actualizarlos también en la “base de datos” de endpoints de SNS todo el tiempo?

El único ejemplo que encontré es hacerlo así:

var AWS = require (& # 39; sdk-aws & # 39;);
const sns = new AWS.SNS()

const params = {
    PlatformApplicationArn: ‘< Platform Arn & gt;’,
    Token: ‘< FCM Token & gt;’
};

const endpointData = await sns.createPlatformEndpoint(params).promise();

const paramsMessage = {
    Mensaje: snsPayload,
    TargetArn: endpointData.EndpointArn
};

await sns.publish(paramsMessage).promise();

¿Y después de eso, cómo puedo publicar un mensaje para varios tokens de FCM a la vez?
Sé que puedo llamar directamente a la API de Firebase y no usar SNS en absoluto, pero estoy en duda si no está destinado a usarse para este escenario o si me estoy perdiendo algo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para enviar un mensaje a varios clientes de FCM, puede crear un tema en SNS y suscribir todos los puntos finales de FCM a este tema. Cada vez que desee enviar un mensaje a todos los clientes suscritos, puede publicar un mensaje en este tema.

    Para crear un tema y suscribir puntos finales a él, puede hacer lo siguiente:

    “`const createTopicParams = {
    Name: ‘mi-nombre-de-tema’
    };
    const createTopicResponse = await sns.createTopic(createTopicParams).promise();

    const subscribeParams = {
    Protocol: ‘application’,
    TopicArn: createTopicResponse.TopicArn,
    Endpoint: ‘ARN o token del punto final de FCM’
    };
    const subscribeResponse = await sns.subscribe(subscribeParams).promise();“`

    Puede usar un bucle para suscribir múltiples puntos finales de FCM al tema.

    Para publicar un mensaje a todos los puntos finales suscritos, puede usar el siguiente código:

    const publishParams = {
    TopicArn: createTopicResponse.TopicArn,
    Message: '¡Hola mundo!',
    };
    const publishResponse = await sns.publish(publishParams).promise();

    Este código publicará el mensaje ‘¡Hola mundo!’ a todos los puntos finales de FCM suscritos al tema.

    No es necesario actualizar la lista de puntos finales cada vez que cambia un token. En su lugar, puede actualizar la tabla de DynamoDB y activar una función de Lambda para actualizar la suscripción de puntos finales al tema de manera dinámica. De esta manera, no es necesario mantener una base de datos de puntos finales separada en SNS.

Comments are closed.