亚马逊SNS中的徽章计数选项

时间:2019-08-28 11:09:23

标签: node.js amazon-sns serverless-framework serverless aws-serverless

我需要在我的应用程序中获取徽章计数。我正在使用Amazon SNS服务。这是我的代码

AWS.config.update({
  accessKeyId: 'XXXXXXX',
  secretAccessKey: 'XXXXXXX'
})
AWS.config.update({ region: 'XXXXXXX' })
const sns = new AWS.SNS()
const params = {
  PlatformApplicationArn: 'XXXXXXX',
  Token: deviceToken
}
sns.createPlatformEndpoint(params, (err, EndPointResult) => {
  const client_arn = EndPointResult["EndpointArn"];
    sns.publish({
      TargetArn: client_arn,
      Message: message,
      Subject: title,
      // badge: 1
    }, (err, data) => {
    })
  })

我需要知道在哪里可以添加badge选项吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以将json消息发送到AWS SNS,以将推送通知发送到应用程序端点。这样我们就可以发送平台(APNS,FCM等)的特定字段和自定义内容。

用于APNS的示例json消息是

{
"aps": {
    "alert": {
        "body": "The text of the alert message"
    },
    "badge": 1,
    "sound": "default"
 }
}

这是发送请求的方式,

   var sns = new AWS.SNS();
   var payload = {
      default: 'This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for 
  one of the notification platforms.',
      APNS: {
        aps: {
          alert: 'The text of the alert message',
          badge: 1,
          sound: 'default'
        }
      }
    };

    // stringify inner json object
    payload.APNS = JSON.stringify(payload.APNS);
    // then stringify the entire message payload
    payload = JSON.stringify(payload);

    sns.publish({
      Message: payload,      // This is Required
      MessageStructure: 'json',
      TargetArn: {{TargetArn}} // This Required
    }, function(err, data) {
      if (err) {
        console.log(err.stack);
        return;
      }
    });
  });

如果您需要支持多个平台,则根据AWS文档,

  

要将消息发送到安装在多个平台(例如FCM和APNS)的设备上的应用程序,您必须首先将移动终端节点订阅Amazon SNS中的主题,然后将消息发布到 topic

可以在APNS Payload Key Reference中找到特定于APNS的有效负载密钥。

AWS SNS文档可在Send Custom, Platform-Specific Payloads to Mobile Devices

中找到