Vytvořil jsem E-Commerce IOS aplikace s backend v nodejs (AWS Lambda). Když uživatel podepsané/LoggedIn, aplikace se hlásí jako SNS Téma , které jsem vytvořil pro odeslání oznámení a ukládá push token a zařízení ARN v DB. Teď chci poslat push oznámení všem uživatelům, kteří se přihlásili, že SNS Téma,, když jsme přidali novou položku do obchodu. V současné době, poslat oznámení jsem načítání všechny uživatele z DB a smyčky prostřednictvím uživatelům, aby se jejich tlak token a odeslat oznámení uživatelům po jednom, což je velmi nákladný proces, a API vzal příliš mnoho času.
Teď chci udělat, je hit SNS téma z Lambda a předat tělo oznámení, že téma a že SNS téma bude posílat oznámení všem uživatelům, kteří se přihlásili na Téma. Hledal jsem, ale nemůžu najít žádné řešení.
Kód jsem udělal poslat oznámení
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 pro to budu muset načíst všechny uživatele z DB získat jejich endpoint ARN a pak poslat oznámení o iteraci.
Chci zavolat SNS téma předat orgánu oznámení a SNS bude posílat oznámení, aby každý uživatel, který se zaregistroval, že SNS téma.
Dělám to, protože chci ušetřit náklady, aby přinesla každé uživatele z DB a pak poslat oznámení