Как получить значения ВСЕХ токенов на вашем сервере? - PullRequest
0 голосов
/ 23 мая 2018

Я хотел бы получить коллекцию ВСЕХ моих токенов пользовательских устройств iOS из FCM по этому пути в моей базе данных Firebase:

BootCamp/Notifications/iOS

В этом месте создается autoIDChild для хранения устройства пользователей.токены как "deviceToken" .

Я пытался следовать примеру cloud_functions на этой ссылке , но, поскольку мой вариант использования отличается, он немноготрудно понять.Вот мой код облачной функции в JS:

exports.iOSPush = functions.database.ref('/BootCamp/Bulletins/date').onWrite((snapShot, context) =>{

let tokensSnapShot
let tokens

//here, I attempt to get access to all iOS tokens on my server
const getTokens = admin.database().ref('/BootCamp/Notifications/iOS/{key}').once('value');

return Promise.all([getTokens]).then( (results) => {
tokensSnapShot = results[0]
tokens = Object.keys(tokensSnapShot)

const payload = {
  notification:{
    title: 'congrats it works',
    body: 'Cloud function noti for ios',
    sound: 'default',
    badge: '1'
    }
};
  //tokens value in the console log is: "node_,ref_,index_". I was expecting an array of tokens:/
  return  admin.messaging().sendToDevice(tokens, payload)  
})
});

Как мне получить эти токены iOS на моем сервере?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Пожалуйста, проверьте этот пример:

  return Promise.all([admin.database().ref(`/users/${user}/account/tokensArray`).once('value')]).then(results => {
    const tokens = results[0];
    if (!tokens.hasChildren()) return null;
    let payload = {
      notification: {
        title: 'title',
        body: 'message',
        icon: 'icon-192x192.png'
      }
    };
    const tokensList = Object.keys(tokens.val());
    return admin.messaging().sendToDevice(tokensList, payload);
  });
0 голосов
/ 23 мая 2018

В конце концов мне пришло в голову, что я должен назвать childPath так же, как токен устройства вместо случайно сгенерированного childID.

...