我正在寻找将 node.js 与 Amazon SNS 和 Apple APN 推送通知结合使用的示例。我们使用 Amazon 进行托管,我以前也使用过 SNS,这非常简单。但他们提供的推送通知示例是针对 java 的,没有针对 Node.js 的示例。像往常一样,这让他们感到困惑,我希望能减少我的研究和时间。这不可能那么难。我还想知道他们如何处理错误,以及沙箱和生产之间的差异。 Apple 在这两种环境中的反应不同,不会像在生产环境中那样在沙箱中失败。
最终它并没有那么难,只是弄清楚文档就令人不愉快了。您需要在控制台中创建 SNS 主题的主端点,这是迄今为止最简单的方法,包括加载证书。然后,您使用 createPlatformEnpoint 为每个设备 ID 创建一个端点。这将返回另一个特定于该设备的 SNS 主题,然后您可以使用该主题发送消息。
因此,以下工作将单个消息发送到单个客户端。如果您想批量发送一些东西,不确定是否可以做到。也不知道你如何处理苹果的反馈,你应该检查发送失败的情况。
config = require("./config.js").config;
var token = "1234567898123456789";
var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: config.AWSAccessKeyId, secretAccessKey: config.AWSSecretKey});
AWS.config.update({region: config.AWSRegion});
var sns = new AWS.SNS();
var params = {'PlatformApplicationArn':config["AWSTargetARN"],'Token':token};
var message = 'Test';
var subject = 'Stuff';
sns.createPlatformEndpoint(params,function(err,EndPointResult)
{
var client_arn = EndPointResult["EndpointArn"];
sns.publish({
TargetArn: client_arn,
Message: message,
Subject: subject},
function(err,data){
if (err)
{
console.log("Error sending a message "+err);
}
else
{
console.log("Sent message: "+data.MessageId);
}
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)