Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AMAZON SNS使用Node js将通知有效负载推送到android mobile_Javascript_Node.js_Amazon Web Services_Amazon Sns - Fatal编程技术网

Javascript AMAZON SNS使用Node js将通知有效负载推送到android mobile

Javascript AMAZON SNS使用Node js将通知有效负载推送到android mobile,javascript,node.js,amazon-web-services,amazon-sns,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. Denmar

使用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));
它正在发送推送通知

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));

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

根据文档:

使用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"}}}

这应该会像预期的那样起作用。

嗨,@Naresh Kumar。您是否能够通过以下答案解决您的问题?