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.

Enviar notificación de SNS a todos los usuarios que se suscribieron al tema desde Lambda.

He creado una aplicación de comercio electrónico IOS con un backend en nodejs (AWS Lambda). Cuando un usuario inicia sesión, la aplicación se suscribe a un tema de SNS que he creado para enviar notificaciones y guarda el token de empuje y el ARN del dispositivo en la base de datos.
Ahora quiero enviar notificaciones push a todos los usuarios que se hayan suscrito a ese tema de SNS cuando agreguemos un nuevo artículo a la tienda.
Actualmente, para enviar notificaciones, obtengo todos los usuarios de la base de datos y recorro los usuarios para obtener su token de empuje y enviar notificaciones a los usuarios uno por uno, lo cual es un proceso muy costoso y la API tarda demasiado tiempo.

Lo que quiero hacer ahora es llamar al tema de SNS desde Lambda y pasar el cuerpo de la notificación a ese tema, y ese tema de SNS enviará notificaciones a todos los usuarios que se hayan suscrito al tema.
Lo he buscado pero no encuentro ninguna solución.

El código que he hecho para enviar notificaciones es:

Espera a que se completen todas las promesas de los ARN de destino (targetArns.map(async (item, index)) => {
const publishNotificationParams = {
“TargetArn”: item,
“Message”: JSON.stringify({
“default”: JSON.stringify({
“category” : title,
“alert” : {
“title” : title,
“body” : ‘Se ha lanzado un nuevo producto’,
“data” : product
},
“badge” : 1,
“sound” : “chime.aiff”
}),
“APNS_SANDBOX”: JSON.stringify(params),
“APNS”: JSON.stringify(params)
}),
“MessageStructure”: “json”
};
var publishTextPromise = sns.publish(publishNotificationParams).promise();
publishTextPromise.then(
function(data) {
console.log(Se ha enviado el mensaje ${publishNotificationParams.Message} al tema ${publishNotificationParams.TargetArn});
}).catch(
function(err) {
console.error(err, err.stack);
});
}));

Pero para esto tengo que obtener cada usuario de la base de datos, obtener su ARN de extremo y luego enviar una notificación por iteración.

Quiero llamar al tema de SNS, pasar el cuerpo de la notificación y que SNS envíe notificaciones a todos los usuarios que se hayan suscrito a ese tema.

Estoy haciendo esto porque quiero ahorrar el costo de obtener cada usuario de la base de datos y luego enviar notificaciones.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    ¿Hay alguna manera de hacer esto?

    Sí, es posible enviar notificaciones push a todos los usuarios que se hayan suscrito a un tema de SNS. Puede utilizar la API de publicación de Amazon SNS para enviar un mensaje al tema y se entregará a todos los usuarios suscritos.

    La API de Publicar toma un parámetro TargetArn que es el ARN del tema al que desea enviar el mensaje. También puede pasar un parámetro MessageStructure que le permite especificar el formato del mensaje.

    También puede utilizar la API de suscripción de Amazon SNS para suscribir a los usuarios en el tema. Esta API toma un parámetro Protocol que especifica el tipo de suscripción (por ejemplo, aplicación para notificaciones push).

    Para obtener más información sobre cómo utilizar las API de Amazon SNS, consulte la Guía del Desarrollador de Amazon SNS.

Comments are closed.