【发布时间】:2021-08-18 09:02:58
【问题描述】:
我在互联网上尝试了所有可能的解决方案,没有希望
我想要做的是简单地使用 aws lambda 函数(通过 aws 控制台)从假设 DynamoDB(不包括在问题中)获取用户 fcm 令牌,使用该令牌创建端点Arn,发送推送到那个特定设备
我测试了使用 SNS 控制台发送并且推送成功到达设备,但我未能使用 Lambda 函数将其发送到设备,尽管它提供了成功状态和消息 ID
这是我使用的代码
// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set region
AWS.config.update({region: 'us-east-1'});
const sns = new AWS.SNS()
const sampleMessage = {
"GCM": {
"notification": {
"body": "Sample message for Android endpoints",
"title":"Title Test"
}
}
}
exports.handler = async (event) => {
const snsPayload = JSON.stringify(sampleMessage);
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
const params = {
PlatformApplicationArn: '<Platform Arn>',
Token: '<FCM Token>'
};
try {
const endpointData = await sns.createPlatformEndpoint(params).promise();
const paramsMessage = {
Message: snsPayload,
TargetArn: endpointData.EndpointArn
};
var publishTextPromise = await sns.publish(paramsMessage).promise();
response.MessageId = publishTextPromise.MessageId;
response.result = 'Success';
}
catch (e) {
console.log(e.stack)
response.result = 'Error'
}
return response;
};
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sns