Firebase Messaging - Push-уведомление в группу, если включено push-уведомление для определенного токена - PullRequest
0 голосов
/ 08 апреля 2019

У меня следующая проблема: я хотел бы отправить push-уведомление в специальную группу, но только если токен имеет значение «enabled = true».В противном случае, если «enabled = false», определенный токен не должен получать push-уведомление.

Нет проблем отправить push-уведомление всем токенам в определенном groupId, так как в облачной функции используется только tokenId,Я использую плагин firebase_messaging для флаттера.

Моя структура в базе данных реального времени: fcm-token -> groupId -> tokenId

enter image description here

(в настоящее время работает: токены 1234 и 5678 получают push-уведомления. Цель: только токен 1234 получает push-уведомления).

Моя облачная функция:

exports.pushNotification = functions.database.ref('messages/{groupid}/{messageid}').onWrite((change, context )=> {
const valueObject = change.after.val();
const group = valueObject.groupId;

if(valueObject.messagetype == 1 && valueObject.groupId != null) {
  valueObject.imageUrl= "Sent picture";

   DATA = {
    notification:{
        title : valueObject.author + " @ " + valueObject.groupName,
        body : valueObject.text || valueObject.imageUrl,
        badge : '1',
        sound : 'default'
    },
data: {
    id: group, 
    status: '/start',
    },  

};
return admin.database().ref('fcm-token/'+group).once('value').then(allToken => {
    if(allToken.val()){
        console.log('token available');
        const token = Object.keys(allToken.val());
        return admin.messaging().sendToDevice(token, DATA);
    }else{
        console.log('No token available');
    }
});
}
});
...