我已经完成了实现通知的firebase函数。
所以我试图更改函数类型,但失败了。。如何更改此代码?
exports.sendNotification = functions.https.onRequest((request,response)=>{
const id = request.body.user_id;
const pw = request.body.user_pw;
const yourToken = request.body.yourToken;
const myToken = request.body.myToken;
var payload = {
notification:{
title : "notify",
body : "suceess to send."
},
data:{
title : "notify",
body : "suceess to send.",
user_id : id,
user_pw : pw,
myToken : myToken,
yourToken : yourToken,
}
};
response.send(admin.messaging().sendToDevice(yourToken, payload));
});
从该代码到。。
exports.Notification = functions.https.onCall((data,context)=>{
});
这个。
如果我正确理解了你的问题,你需要首先了解onRequest()
(类似HTTPS Express(和onCall()
(可调用(Firebase函数之间的主要区别。
来自文件:
重要的是要记住HTTPS可调用函数与HTTP函数相似但不相同。可调用程序与HTTP函数有以下关键区别:
- 通过可调用,Firebase身份验证和FCM令牌(如果可用(会自动包含在请求中
- functions.https.onCall触发器自动反序列化请求主体并验证身份验证令牌
有关更详尽的解释,请参阅可调用云函数是否比HTTP函数更好?
这是一些未经测试的代码,您可以使用它来开始:
exports.sendToDevice = functions.https.onCall(async (data, context) => {
// Data passed from the client using the Callable
const id = data.user_id;
const pw = data.user_pw;
const yourToken = data.token;
const myToken = data.myToken;
var payload = {
notification:{
title : "notify",
body : "suceess to send."
},
data:{
title : "notify",
body : "suceess to send.",
user_id : id,
user_pw : pw,
myToken : myToken,
yourToken : yourToken,
}
};
return await admin.messaging().sendToDevice(yourToken, payload);
);
请注意,data
可以包含消息文本,而context
参数表示用户身份验证信息。
context
包含有关请求的元数据,如uid和token,更多信息可在此处找到。
编辑:
定义payload
的示例代码可以在这里找到。这里可以找到sendToDevice()
方法。