使用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));
发送推送通知的正确格式是什么?
答案 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"}}}
哪个应该按预期工作。