我想向特定设备发送多个通知,尝试1-1通信:
router.post('/send', function(req, res){
getAccessToken().then(function(access_token){
var title = req.body.title;
var body = req.body.body;
var token = req.body.token;
request.post({
headers:{
Authorization: 'Bearer ' + access_token
},
url:"https://fcm.googleapis.com/v1/projects/MYPROJECT/messages:send",
body: JSON.stringify(
{
"message":{
"token": token,
"notification":{
"body":body,
"title":title
}
}
}
)
}, function(error, response,body){
res.end(body);
console.log(body);
});
});
});
它真的很管用。问题是,我不太了解NodeJS/JS中的程序,代码来自YT教程,我想发送多条消息。我正在尝试:
router.post('/sendmulticast', function(req, res){
getAccessToken().then(function(access_token){
var title = req.body.title;
var body = req.body.body;
var token = req.body.token;
for(var i = 0; i <= token.length; i++){
request.post({
headers:{
Authorization: 'Bearer ' + access_token
},
url:"https://fcm.googleapis.com/v1/projects/MYPROJECT/messages:send",
body: JSON.stringify(
{
"message":{
"token": token[i],
"notification":{
"body":body,
"title":title
}
}
}
)
}, function(error, response,body){
res.end(body);
console.log(body);
});
}
});
});
但是它返回ERR_STREAM_WRITE_AFTER_END,我想由于它是一个异步任务,它正在等待服务器的响应。
我尝试为安卓用户订阅该主题,但FCM没有注册该主题。如果你能帮助我使用这个服务器端方法,我将不胜感激。
res.end(body)
似乎是个问题。把这个放在循环之外,它应该会起作用。您可以考虑创建一个函数来发布请求。