我希望在我的Firebase数据库中从此路径获取所有我的FCM用户iOS设备令牌:
BootCamp/Notifications/iOS
在此位置创建autoIDChild以存储用户'设备令牌为" deviceToken" 。
我一直在尝试关注此 link的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令牌?
答案 0 :(得分:0)
我终于想到,我必须将childPath命名为与设备令牌相同而不是随机生成的childID。
答案 1 :(得分:0)
请查看此示例:
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);
});