通过Firebase向主题中的所有人发送通知,但发件人

时间:2018-05-08 02:14:34

标签: javascript firebase firebase-cloud-messaging google-cloud-functions

如何向订阅主题但发送邮件的所有人发送通知?我很遗憾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)
	}




1 个答案:

答案 0 :(得分:0)

将消息发送给订阅该主题的所有设备。除非在发送邮件之前取消订阅,否则无法从主题中排除设备。

似乎您希望在邮件中包含一些值,发件人可以使用该值来识别邮件来自自身,然后使用它来选择忽略整个邮件。

除此之外,您的函数不会返回一个承诺,指示它发送的消息何时。完全有可能永远不会发送消息,因为云功能可能会在发送消息之前将其清除。