use*_*652 5 javascript firebase google-cloud-functions firebase-cloud-messaging
我正在使用谷歌云功能通过 firebase 注册推送通知。在我的应用程序中,我有一个通知参考,每当他们获得新的关注者或喜欢等时,该参考都会改变当前用户。截至目前,只要整个参考孩子发生变化,我就可以将通知发送到手机
例如,如果喜欢任何单个帖子,那么它会发送通知。我需要做的是观察当前用户只发送通知那个人。
这是我的 JavaScript 文件
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendPushNotification = functions.database.ref('/notification/{id}').onWrite(event => {
const payload = {
notification: {
title: 'New message arrived',
body: 'come check it',
badge: '1',
sound: 'default',
}
};
return admin.database().ref('fcmToken').once('value').then(allToken => {
if (allToken.val()) {
const token = Object.keys(allToken.val());
return admin.messaging().sendToDevice(token, payload).then(response => {
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
我想替换这一行:
functions.database.ref('/notification/{id}').onWrite(event => {
Run Code Online (Sandbox Code Playgroud)
有了这个:
functions.database.ref('/notification/{id}').(The current user ID).onWrite(event => {
Run Code Online (Sandbox Code Playgroud)
如何获取当前用户 ID?
您对 JavaScript 似乎很陌生(称其为 JSON 是一种赠品)。Cloud Functions for Firebase 不是学习 JavaScript 的最佳方式。我建议首先阅读面向 Web 开发人员的Firebase 文档和/或参加面向 Web 开发人员的Firebase 代码实验室。它们涵盖了许多基本的 JavaScript、Web 和 Firebase 交互。在这些之后,您也将更有能力为 Cloud Functions 编写代码。
现在回到您的问题:Cloud Functions 中没有“当前用户”的概念。您的 JavaScript 代码在服务器上运行,所有用户都可以通过写入数据库来触发代码。
您可以弄清楚是哪个用户触发了该功能,但这也不是您在这里想要的。触发通知的用户不是需要接收消息的用户。您想要的是读取作为通知目标的用户。
一种方法是从触发函数的数据库路径中读取它。如果您将每个用户的通知保存在数据库中,如下所示:
user_notifications
$uid
notification1: ...
notification2: ...
Run Code Online (Sandbox Code Playgroud)
您可以像这样触发云函数:
exports.sendPushNotification = functions.database.ref('/user_notification/{uid}/{id}').onWrite(event => {
Run Code Online (Sandbox Code Playgroud)
然后在该函数的代码中,使用以下命令获取用户的 UID:
var uid = event.params.uid;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |