几个月前,我开始使用Firebase的后端工具。他们太棒了。所以我不得不采用当前的方法来通知用户他们的待办事项列表。我们转向云功能,速度提高了40倍。直到一周前我得到了MacOS的新副本我不得不删除固态硬盘中的所有内容。当我这样做时,我还安装了firebase命令行工具。我有我用于通知用户的代码,它突然停止工作
以下是发生的事情:
当有人在我们的每日列表中添加新记录时。该应用程序通知其他家庭成员有关新记录。所以我不得不想出一个方法来做到这一点。
旧代码(无缝工作)
const functions = require('firebase-functions');
var admin = require("firebase-admin");
admin.initializeApp();
var registrationToken = 'egV-C3ItwJE:APA91bGf5ezSRQQFHkzCNzfqhS6tiKRbs6IXXs57DFTrNCWRrVY0pZ4PHsK8G3ZjvvvO4JCvd13j_jBcJkgRh06YJ5Jw6tohc81Ro0k4HdHG-Jlv4sbW5t1DNmJBDeGf48l05eDlfMGO';
var payload = {
data: {
title: 'TEST/2',
body: 'TEST/2'
}
};
// registration token.
admin.messaging().sendToDevice(registrationToken, payload)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response, payload);
return
})
.catch((error) => {
console.log('Error sending message:', error);
});
回到我以前的macOS版本,这段代码没有问题。升级Firebase命令行工具我必须对代码进行一些编辑:
新代码(不工作)
// This registration token comes from the client FCM SDKs.
var registrationToken = 'egV-C3ItwJE:APA91bGf5ezSRQQFHkzCNzfqhS6tiKRbs6IXXs57DFTrNCWRrVY0pZ4PHsK8G3ZjvvvO4JCvd13j_jBcJkgRh06YJ5Jw6tohc81Ro0k4HdHG-Jlv4sbW5t1DNmJBDeGf48l05eDlfMGO';
// See documentation on defining a message payload.
var message = {
data: {
title: '850',
body: '2:45'
},
token: registrationToken
};
// Don't use the legacy sendToDevice
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
return
})
.catch((error) => {
console.log('Error sending message:', error);
});
问题是:
1-此功能点击时。我得到了“成功发送消息:”的回复。但邮件将无法到达设备
我尝试过的事情:
1-设备令牌是正确的,我已使用单个设备上的手动推送通知对其进行了测试
2-设备收到通知。
3-该设备在iOS 11.1上运行,与之前相同
由于
答案 0 :(得分:1)
你可以检查这个功能,我试过这个我能得到通知。
在您的第一个代码示例中,您有用户sendToDevice,但在第二个示例中,您使用了发送
function sendPushNotification(fcmtoken, notificationTitle, notificationMessage) {
if (fcmtoken != null && fcmtoken != "" && fcmtoken != " ") {
var payload = {
notification: {
title: notificationTitle,
body: notificationMessage,
sound: "default"
}
};
admin.messaging().sendToDevice(fcmtoken, payload)
.then(function (response) {
}).catch(function (error) {
console.log("Error sending message:", error);
});
}
}