Ho creato un E-Commerce app IOS con backend in nodejs (AWS Lambda). Quando un utente signingout/LoggedIn, l'app sottoscrive un SNS Argomento che ho creato per l'invio di notifiche e memorizza il push token e dispositivo di ARN in DB. Ora voglio inviare notifiche push a tutti gli utenti che hanno sottoscritto SSN Argomento, quando abbiamo aggiunto un nuovo elemento per il negozio. Attualmente, per inviare la notifica io sono il recupero di tutti gli utenti dal DB e loop attraverso la gli utenti a ottenere la loro spinta token e inviare notifiche agli utenti uno per uno, che è molto costoso processo, e l'API ha preso troppo tempo.
Ora, voglio fare è quello di colpire la SNS argomento da Lambda e passare il corpo di notifica a tale argomento e che SNS argomento invierà notifica a tutti gli utenti che hanno sottoscritto l'Argomento. Ho cercato, ma non riesce a trovare nessuna soluzione.
Il codice che ho fatto per inviare la notifica è
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);
});
}));
Ma per questo devo recuperare ogni utente dal DB ottenere i loro endpoint ARN e quindi inviare la notifica di iterazione.
Voglio chiamare SNS argomento di passare il corpo di notifica e SNS invierà una notifica per ogni utente che ha sottoscritto SSN argomento.
Sto facendo questo perché voglio risparmiare il costo per recuperare tutti gli utenti dal DB e poi inviare la notifica