Expo SDK version: 3.23.2
Platform: all
Doing push notifications using Firebase cloud functions. They work locally but on the standalone app they messages don’t go out/get received on the device.
Here is the cloud function:
const functions = require(‘firebase-functions’);
var fetch = require(‘node-fetch’)
const admin = require(‘firebase-admin’)
admin.initializeApp(functions.config().firebase);
exports.sendNewBookingNotification = functions.database.ref(‘/bookings/{id}’)
.onCreate((snapshot, context) => {
const original = snapshot.val();
var user = '';
var expoToken = '';
var messages;
return admin.database().ref(‘userProfiles’).orderByChild(“roleId”).equalTo(0).once(‘value’).then(snapshot => {
snapshot.forEach(function(snap) {
user = snap.val().userId;
})
return Promise.resolve(user)
}).then(user => {
return admin.database().ref("devices").orderByChild("userId").equalTo(user).once('value').then(snapshot => {
snapshot.forEach(function (childSnapshot) {
expoToken = childSnapshot.val().expoToken;
messages = {
"to": expoToken,
"title": 'xxxxxxxxxxxx',
"body": 'xxxxxxxxxxxxxxxxxxxxx',
"sound": "default",
"badge": 1,
}
});
return Promise.resolve(messages)
})
}).then(messages => {
console.log(messages)
fetch('https://exp.host/--/api/v2/push/send', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
"Accept-encoding": "gzip, deflate",
},
body: JSON.stringify(messages)
});
})
.catch(reason => {
console.log(reason)
})
});