使用NodeJS中的aws-sdk
包将Amazon SNS推送通知实现到android设备。我下面提到的实现很少。移动设备正在显示推送通知。我想在有效载荷中发送数据和通知对象。
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));
发送推送通知的正确格式是什么?
最佳答案
根据文档:
使用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"}}}
哪个应该按预期工作。
关于javascript - AMAZON SNS使用Node js将通知有效内容推送到android mobile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47588747/