如何向订阅主题的每个人发送通知,但消息发送者除外?对不起,JS代码真的很蹩脚我保证我会改进它,此代码将推送通知发送给当前订阅的每个人,包括消息发送者,我只需要停止发送者,谢谢
let functions = require('firebase-functions');
var admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase)
exports.newMessage = functions.database.ref('groups/{groupId}/messages/{messageId}')
.onWrite(event => {
const message = event.data.val()
const groupId = event.params.groupId
sendNotification(message, groupId)
})
function sendNotification(message, groupdIdTopic) {
let title = message.placeName
let subtitle = message.content
let payload = {
notification: {
title: title,
body: subtitle,
sound: 'default',
badge: '1',
mutable_content: 'true'
},
data : {
placeId : groupdIdTopic,
userSenderId : message.senderId
}
}
var options = {
priority: "high",
timeToLive: 60 * 60 * 24,
mutable_content : true,
content_available : true,
category : 'reminder'
}
admin.messaging().sendToTopic(groupdIdTopic, payload, options)
}
消息将发送到订阅该主题的所有设备。 无法从主题中排除设备,除非它在发送消息之前自行取消订阅。
似乎您希望在消息中包含一些值,发件人可以使用该值来标识消息来自自身,然后使用该值选择忽略整个消息。
除此之外,您的函数不会返回一个承诺,指示它何时发送消息。 消息完全有可能永远不会发送,因为云函数可能会在发送消息之前对其进行清理。