如何只向接收者发送推送通知?

时间:2017-05-24 13:40:20

标签: firebase push-notification firebase-realtime-database firebase-cloud-messaging google-cloud-functions

我在Ionic 2中开发了一款应用,它使用Firebase根据设备令牌发送推送通知。但是,我希望它向接收者而不是发送者发送推送通知 - 现在,它发送给两者。

我的应用程序的作用:当用户登录时,他会在Firebase中获取设备令牌,用于在收到消息时向他发送推送通知。

我尝试过:我已经遵​​循了tutorial

这是index.js中的node_module

var functions = require('firebase-functions');
var admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);
var wrotedata;
exports.Pushtrigger = functions.database.ref('/chat/{chatId}/messages/{messageId}').onWrite((event) => {
    wrotedata = event.data.val();

    admin.database().ref('/pushtokens').orderByChild('uid').once('value').then((alltokens) => {
        var rawtokens = alltokens.val();
        var tokens = [];
        processtokens(rawtokens).then((processedtokens) => {

            for (var token of processedtokens) {
                if(token!='') {
                tokens.push(token.devtoken);
                }
            }

        var payload = { 

                "notification":{
                    "title":"From: " + wrotedata.username,
                    "body":"Message: " + wrotedata.chat_text,
                    "sound":"default",
                    },
                "data":{
                    "sendername": wrotedata.username,
                    "message": wrotedata.chat_text
                }
        }      
            return admin.messaging().sendToDevice(tokens, payload).then((response) => {
                console.log('Pushed notifications');
            }).catch((err) => {
                console.log(err);
            })
        })    
    })
})

function processtokens(rawtokens) {
    var promise = new Promise((resolve, reject) => {
         var processedtokens = []
    for (var token in rawtokens) {
        processedtokens.push(rawtokens[token]);
    }
    resolve(processedtokens);
    })
    return promise;    

}
  • 想法:由于我有发件人和收件人的UID,我需要在tokens.push(token.devtoken);之前检查令牌的UID是否不是发件人的UID - 我不确定如何实现,但这是我的建议。当'/chat/{chatId}/messages/{messageId}'中写入新邮件
  • 时,会触发我的Firebase中的功能

0 个答案:

没有答案