首页 > 解决方案 > 使用 NodeJS 的 SNS 推送通知

问题描述

我已经阅读了node-push-notification-sns-transport的文档,并且我已经在我的代码中实现了它,这是第一次完美地工作但第二次它显示给我platform already configured然后我必须削减执行并重建并重新运行然后它工作正常。我哪里错了?

sns = (req, res) => {
    push.addTransport(new SnsTransport({
        aws: {
            accessKeyId: cache.get('AMAZON_ACCESS_KEY'),
            secretAccessKey: cache.get('AMAZON_SECRET_KEY'),
            region: cache.get('AMAZON_REGION'),
            apiVersions: {
                sns: '2010-03-31'
            }
        },
        platformAppArn: 'arn:aws:sns:us-xxx-1:XXXXXX:app/GCM/Test'
    }));
    // Send a push notification via SNS.
    push.send('sns', 'device_token', {
        alert: 'how is it going?'
    }, (err, data) => {

        if (err) {
            res.send(err, req);
        } else {
            res.send(data);
        }


    });
}

标签: javascriptnode.jsamazon-web-servicesamazon-sns

解决方案


你在使用 express 框架吗?我看到(req, res) => {语法是如此熟悉。

如果是这样,您只需要通过 AWS SNS 配置一次推送通知。只需将您的传输配置为处理函数,确保它只运行一次。

push.addTransport(new SnsTransport({
  aws: {
    accessKeyId: cache.get('AMAZON_ACCESS_KEY'),
    secretAccessKey: cache.get('AMAZON_SECRET_KEY'),
    region: cache.get('AMAZON_REGION'),
    apiVersions: {
      sns: '2010-03-31'
    }
  },
  platformAppArn: 'arn:aws:sns:us-xxx-1:XXXXXX:app/GCM/Test'
}));

sns = (req, res) => {
  // Send a push notification via SNS.
  push.send('sns', 'device_token', {
    alert: 'how is it going?'
  }, (err, data) => {

    if (err) {
      res.send(err, req);
    } else {
      res.send(data);
    }
  });
}

推荐阅读