感谢这个社区,我了解到可以通过Lambda发送带有node.js的AWS SNS推送通知(作为Parse迁移的结果)。我仍然在努力解决以下问题:
同样,我们不希望按计划向所有用户广播,而是在客户端执行操作时。
提前非常感谢!
答案 0 :(得分:2)
我们假设你有Device1创建了一段内容。这被分发给许多用户。 Device2接收此内容并且"喜欢"它
假设: 您已在设备上注册推送通知,并在AWS上创建了SNS端点。您已将该端点ARN存储在数据库中,并将其与Cognito Id或内容ID相关联。如果您的数据已标准化,那么您通常会将SNS端点与设备关联。
您的Lambda需要有权访问该数据源,并查找该SNS端点以发送推送通知。这取决于您使用的是哪种数据存储(RDS,DynamoDB,还有其他)。什么样的访问权限以及如何保护它是另一个主题。
从Lambda中,您获取ARN以发送推送通知。如果您从Like中传入内容ID,并从拥有它的设备中获取Cognito Id,则可以查找所需的信息。然后构建一个SNS有效负载(我在此示例中假设为APNS),然后将其发送给SNS。
var message = {
"default": "New Like!",
"APNS": {
"aps": {
"alert": "New Like!"
}
}
};
var deviceParams = {
Message: JSON.stringify(message),
Subject: "New Like",
TargetArn: targetArn,
MessageStructure: "json"
};
self.sns.publish(deviceParams, function (err) {
if (err) {
console.error("Error sending SNS: ", err);
}
});
并非所有人都为你做过像Parse一样。你需要在AWS上更加努力地工作,但你几乎可以无限制地做你想做的事。
如果这有点太多,您可能需要考虑Google新近更新的Firebase平台。它很像Parse:https://firebase.google.com/
希望能帮助你向前迈进一步。
进一步阅读:
http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html