我正在尝试使用Firebase云功能创建消息推送。以下是我的代码:
const admin = firebase
exports.sendNewTripNotification = functions.firestore
.document('notifications/{notificationId}')
.onWrite(async (event) => {
console.log("event: ", event)
const key = "cK0e5ZRAVRUAlx8hXHkNkXp7mj43"
const ref = admin.database().ref(`users/${key}/deviceToken`);
console.log("ref: ", ref)
const deviceToken = admin.database().ref(`/users/${key}/deviceToken`).once('value');
return deviceToken.then(result => {
const token_id = result.val();
console.log("token_id", token_id)
const payload = {
notification: {
title: "Friend Request",
body: "You just got a new friend request",
icon: "default"
}
};
console.log("payload", payload)
return admin.messaging().sendToDevice(token_id, payload).then(Response => {
console.log('this is the notification',Response)
});
});
})
我得到以下错误:
错误:提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在FirebaseMessagingeror。FirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/error.js:42:28)位于FirebaseMessagingError。PrefixedFirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/error.js:88:28)
我确实参考了以下两个链接,但没有得到任何帮助。我做错什么了吗?
Firebase Cloud Functions在创建实时数据库时获取数据
Firebase Cloud Functions代币
问题已修复。我犯了一个愚蠢的错误。我没有在登录另一台设备时覆盖设备令牌。
您将async/await与then()
混合使用,这是不推荐的。以下内容应该可以做到(未经测试):
exports.sendNewTripNotification = functions.firestore
.document('notifications/{notificationId}')
.onWrite(async (event) => {
console.log("event: ", event)
const key = "cK0e5ZRAVRUAlx8hXHkNkXp7mj43"
const ref = admin.database().ref(`users/${key}/deviceToken`);
console.log("ref: ", ref)
const deviceToken = await ref.once('value');
const token_id = deviceToken.val();
console.log("token_id", token_id)
const payload = {
notification: {
title: "Friend Request",
body: "You just got a new friend request",
icon: "default"
}
};
const messagingDevicesResponse = await admin.messaging().sendToDevice(token_id, payload);
console.log('this is the notification', messagingDevicesResponse)
return null;
})
这是舱单 这是我的注册令牌类 这是我的Firebase服务类
我正在写一个iOS的应用程序,使用laravel的API和谷歌Firebase的推送通知。当我使用Firebase云消息传递发送消息推送时,它会进入我的设备。当我使用laravel发送推送通知时,它不会影响。这里是我的脚本发送推送通知laravel: 它返回一个成功的结果,但通知未发送到iOS设备。 PS:它可以在Android设备上成功运行。
我正在制作一个android应用程序,其中我使用firebase身份验证来验证用户,使用firestore来存储一些用户数据。我想让用户有一个设置,他们可以订阅推送通知。如果他们订阅,我希望我的应用程序定期向他们发送通知,比如每6小时一次。目前,我已经使用firebase控制台测试了推送通知,它看起来工作正常。以下是我到目前为止的< code > myfirebasemesagingservice
我正在尝试开发一个应用程序,其中服务器必须每5秒向运行该应用程序的所有android设备发送通知。我决定使用(谷歌)Firebse云消息发送通知,所以我首先尝试了指南的示例项目 https://firebase.google.com/docs/notifications/android/console-audience 但我不能让它工作。我遵守了所有的指示。我已经发布了我使用的代码。我也做了档案-
我试图制作一个云函数,向给定用户发送消息推送。 用户进行一些更改,并在firebase数据库中的节点下添加/更新数据(该节点表示用户id)。这里我想触发一个函数,它向用户发送推送通知。 对于DB中的用户,我有以下结构。 到目前为止,我有这个功能: 当我得到回调时,snapshot.val()返回null。知道怎么解决这个问题吗?也许之后如何发送消息推送?
如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star