AWS Lambda for Client to Client推送通知

时间:2016-08-06 15:20:42

标签: amazon-web-services parse-platform aws-lambda amazon-sns

感谢这个社区,我了解到可以通过Lambda发送带有node.js的AWS SNS推送通知(作为Parse迁移的结果)。我仍然在努力解决以下问题:

  • 这可以做客户端x客户端x喜欢y的z。其中x是用户1,y是用户2,z是被喜欢的对象?如果是这样,似乎Cognito不需要它可以直接从数据库中读取,但这是准确的吗?
  • 有没有人举例说明这是如何实现的?

同样,我们不希望按计划向所有用户广播,而是在客户端执行操作时。

提前非常感谢!

1 个答案:

答案 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

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html