AMAZON SNS使用Node js将通知负载推送到Android移动设备

时间:2017-12-01 07:42:37

标签: javascript node.js amazon-web-services amazon-sns

使用NodeJS中的aws-sdk包向Android设备实施Amazon SNS推送通知。我在下面提到的实现很少。移动设备正在显示推送通知。我想在有效负载中发送数据和通知对象。

let payload2 = JSON.stringify({
  default: 'Naresh',
  GCM:  JSON.stringify({
    notification : {
      body : 'great match!',
      title : 'Portugal vs. Denmark'       
    },
    data:{
      testdata: 'Check out these awesome deals!',
      url: 'www.amazon.com'
    }
  })
});

它不会发送推送通知。

let payload1 = {
  "GCM": "{
    \"notification\": {
      \"title\": \"this one last test in app\", 
      \"body\": \"mm hello tests\"
    },
    \"data\": {
      \"turnclass\": \"efwfwe\",
      \"flight\": \"truejet\"}
  }"
};

它正在发送推送通知。

sns.publish({ TargetArn: targetArn,
  Message: payload1,
  MessageStructure: 'json'
}, (error, data) => (error) ? reject(error) : resolve(data));

发送推送通知的正确格式是什么?

1 个答案:

答案 0 :(得分:1)

根据文件:

  

使用Amazon在邮件中发送特定于平台的有效负载时   SNS控制台,数据必须是键值对字符串并格式化为   带引号的JSON已转义。

示例:

{
   "GCM":"{
      "data":{
         "message":"Check out these awesome deals!",
         "url":"www.amazon.com"
      }
   }"
}

您在第一个有效负载中执行的操作会产生以下输出:

{"default":"Naresh","GCM":"{\"notification\":{\"body\":\"great match!\",\"title\":\"Portugal vs. Denmark\"},\"data\":{\"testdata\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}"}

这不是有效的格式。之所以发生这种情况,是因为您将对象的一部分加倍JSON.stringify。所以如果你这样做:

let payload2 = JSON.stringify({
  default: 'Naresh',
  GCM: {
    notification: {
      body: 'great match!',
      title: 'Portugal vs. Denmark'
    },
    data: {
      testdata: 'Check out these awesome deals!',
      url: 'www.amazon.com'
    }
  }
});

它会产生:

{"default":"Naresh","GCM":{"notification":{"body":"great match!","title":"Portugal vs. Denmark"},"data":{"testdata":"Check out these awesome deals!","url":"www.amazon.com"}}}

哪个应该按预期工作。