Eu criei um E-Commerce de aplicativos IOS com back-end em nodejs (AWS Lambda). Quando um usuário signedIn/LoggedIn, o app subscreva um SNS Tópico que eu criei para enviar notificações de e armazena o push e o token de dispositivo de ARN em DB. Agora quero enviar uma notificação de envio para todos os usuários que tenham se inscrito que SNS Tópico, quando adicionamos um novo item para a loja. Atualmente, para enviar a notificação estou buscando todos os usuários do banco de dados e o ciclo entre os usuários para obter sua empurrar token e enviar uma notificação aos usuários um por um, o que é muito dispendioso processo, e a API demorou muito tempo.
Agora eu quero fazer é acertar o tópico do SNS a partir de Lambda e passar no corpo da notificação, para que o tema e o SNS tópico irá enviar uma notificação para todos os utilizadores que subscreveram o Tópico. Eu tenho procurado, mas não pode encontrar qualquer solução.
O código de eu ter feito enviar uma notificação é
await Promise.all(targetArns.map(async (item, index) => {
const publishNotificationParams = {
"TargetArn": item,
"Message": JSON.stringify({
"default": JSON.stringify({
"category" : title,
"alert" : {
"title" : title,
"body" : 'New product is launced',
"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(`Message ${publishNotificationParams.Message} sent to the topic ${publishNotificationParams.TargetArn}`);
}).catch(
function(err) {
console.error(err, err.stack);
});
}));
Mas para isso eu tenho que buscar a cada usuário do banco de dados a obter o seu ponto de extremidade de ARN e, em seguida, enviar a notificação por iteração.
Eu quero chamar tópico do SNS passar o corpo de notificação e o SNS vai enviar uma notificação para cada utilizador que tenha subscrito que SNS tópico.
Eu estou fazendo isso porque eu quero salvar o custo para a obtenção de todos os usuários do banco de dados e, em seguida, enviar uma notificação