Am creat o adresă de E-Commerce aplicație IOS cu backend în nodejs (AWS Lambda). Atunci când un utilizator signedIn/LoggedIn, aplicația subscrie un SNS Subiect care l-am creat pentru a trimite notificări și stochează împinge token-ul și dispozitivul de ARN în DB. Acum vreau să trimite o notificare împinge pentru toți utilizatorii care s-au abonat care SNS Subiect, atunci când am adăugat un element nou la magazin. În prezent, pentru a trimite o notificare sunt preluarea tuturor utilizatorilor din DB și bucla prin utilizatori pentru a obține împinge token-ul și a trimite o notificare a utilizatorilor, unul câte unul, ceea ce este foarte costisitor proces, și API luat prea mult timp.
Acum vreau să fac este de a lovi SNS subiect de la Lambda si trece organismul de notificare în acest subiect și că SNS subiect va trimite o notificare tuturor utilizatorilor care s-au abonat la Subiect. Am cautat, dar nu se poate găsi nici o soluție.
Codul trebuie făcut pentru a trimite o notificare este
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);
});
}));
Dar pentru aceasta trebuie să aducă fiecare utilizator din DB ia lor final ARN și apoi trimite o notificare prin repetare.
Vreau să sun SNS subiect trece organismul de notificare și SNS va trimite o notificare pentru fiecare utilizator care a subscris ca SNS subiect.
Fac asta pentru că vreau pentru a salva costul de a aduce fiecare utilizatorii din DB și apoi trimite o notificare