I'm working on the group functionality for my react-native app.
(我正在为我的react-native应用程序进行分组功能。)
And I wish to send cloud messages to users who have been added when a group is created.(我希望将云消息发送给创建组时已添加的用户。)
I'm using cloud functions to do that.(我正在使用云功能来做到这一点。)
But I am getting this error in my function:
(但是我的函数出现此错误:)
Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
Its unable to fetch the fcm-token from firestore to send the notification.
(它无法从Firestore获取fcm令牌来发送通知。)
I had written cloud functions for sending friend requests and in that, the token is retrieved successfully from cloud firestore, and the notification is sent.
(我编写了用于发送朋友请求的云函数,其中,从云Firestore成功检索了令牌,并发送了通知。)
This is my cloud function :
(这是我的云功能:)
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
//======================NOTIFY ADDED MEMBERS==========================//
exports.notifyAddedMembers = functions.https.onCall((data, context) => {
const members = data.members;
const groupName = data.groupName;
var tokens = [];
members.forEach(async member => {
//send notifications to member.uid
console.log('MEMBER.UID ', member.uid);
await fetchTokenFromUid(member.uid)
.then(token => {
console.log('retrieved token: ', token);
// tokens.push(token);
const payload = {
notification: {
title: `You have been added to ${groupName}`,
body: 'Share your tasks',
sound: 'default',
},
};
return admin.messaging().sendToDevice(token, payload);
})
.catch(err => console.log('err getting token', err));
});
// console.log('ALL TOKENS: ', tokens);
console.log('GROUP NAME: ', groupName);
});
async function fetchTokenFromUid(uid) {
var token = '';
return await admin
.firestore()
.collection('Users')
.doc(`${uid}`)
.get()
.then(async doc => {
console.log('uid token: ', Object.keys(doc.data().fcmTokens));
var tokenArray = Object.keys(doc.data().fcmTokens); //ARRAY
for (var i = 0; i < tokenArray.length; i++) {
token = tokenArray[i]; //Coverts array to string
}
return token; //return token as string
});
}
I am using the react-native-firebase library.
(我正在使用react-native-firebase库。)
ask by yashatreya translate from so