【发布时间】:2021-12-29 06:00:46
【问题描述】:
我在 nodejs (AWS Lambda) 中创建了一个带有后端的电子商务 IOS 应用程序。当用户登录/登录时,该应用订阅了我创建的用于发送通知的 SNS 主题,并将 推送令牌和设备 ARN 存储在数据库中。 现在,当我们向商店添加新商品时,我想向所有订阅该 SNS 主题的用户发送推送通知。 目前,为了发送通知,我正在从数据库中获取所有用户并循环访问用户以获取他们的推送令牌并将通知一一发送给用户,这是一个非常昂贵的过程,并且 API 花费了太多时间。
现在我要做的是从 Lambda 中点击 SNS 主题并将通知正文传递给该主题,该 SNS 主题将向所有订阅该主题的用户发送通知。 我已经搜索过了,但找不到任何解决方案。
我发送通知的代码是
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);
});
}));
但为此我必须从数据库中获取每个用户获取他们的端点 ARN,然后通过迭代发送通知。
我想调用 SNS 主题传递通知正文,SNS 将向每个订阅该 SNS 主题的用户发送通知。
我这样做是因为我想节省从数据库中获取每个用户然后发送通知的成本
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
@hoangdv 我以前读过这个,但找不到我想要的解决方案。
-
即从 lambda 向所有主题用户发送通知
-
那么,你的问题是什么?
标签: node.js amazon-web-services aws-lambda amazon-sns