Vytvoril som E-Commerce aplikácie pre systém IOS s backend v nodejs (AWS Lambda). Keď používateľ signedIn/LoggedIn, aplikácia hlási a SNS Tému , ktoré som vytvoril posielať upozornenia a ukladá push token a zariadenia ARN v DB. Teraz chcem poslať push notifikácie pre všetkých užívateľov, ktorí si vyžiadali, že SNS Tému, keď sme pridali nové položky do obchodu. V súčasnosti na odoslanie hlásenia som prijem všetkých používateľov z DB a slučky cez používateľom získať ich push token a pošli upozornenie pre používateľov, jeden po druhom, ktorý je veľmi nákladný proces, a API trvalo príliš veľa času.
Teraz chcem urobiť je trafiť SNS tému z Lambda a odovzdať orgánu oznámenie, že téma a že SNS tému zašle upozornenie pre všetkých užívateľov, ktorí si vyžiadali Tému. Som hľadal ho, ale nemôže nájsť žiadne riešenie.
Kód urobil som na odoslanie hlásenia je
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);
});
}));
Ale na to mám, aby priniesla každý užívateľ od DB dostať ich koncový bod ARN a potom odoslať oznámenie iteráciu.
Chcem pozvať, aby SNS tému odovzdať orgánu oznámenia a SNS sa budú odosielať notifikácie pre každého používateľa, ktorý má vyžiadané, že SNS tému.
Robím to, pretože som chcete ušetriť náklady na zisťovanie každý používateľov z DB a potom odoslať upozornenie