我正在使用單個Firebase功能向我的Android用戶發送多個推送通知。在每次執行中發送多個推送通知的Firebase函數中返回*的內容?
每個通知的詳細信息都將寫入我的Firebase數據庫中應該發送的日期和時間。我使用cron通過http請求啓動Firebase功能。
我的問題是Firebase功能應該返回以完成循環所有Firebase節點(代表通知)並完成發送所有通知?
這就是我現在擁有的。它在發送第一個通知後退出。我想要的是完成查看所有Firebase子節點併爲每個節點發送通知。
我不明白Promises的想法足以找出在多個推送通知的情況下返回什麼。這也沒有幫助,我幾乎完全忘記了如何編寫JavaScript。
exports.sendHourlyNotifications = functions.https.onRequest((req, res) => {
const dateStr = req.query.date;
const hourStr = req.query.hour;
console.log('sendHourlyNotifications', 'date: ' + dateStr + " hour: " + hourStr);
const parentRef = admin.database().ref();
const notifRef = parentRef.child('all-notifications');
const hourRef = notifRef.child(dateStr).child(hourStr);
return hourRef.once('value').then(snapshot => {
const updates = {};
snapshot.forEach(function(childSnapshot) {
const deviceToken = childSnapshot.child("deviceToken").val();
console.log('sendHourlyNotifications', 'childSnapshot Key: ' + childSnapshot.key);
const title = childSnapshot.child("title").val();
const body = childSnapshot.child("body").val();
console.log('sendHourlyNotifications', "DeviceToken: " + deviceToken + " Title: " + title + " Body: " + body);
var payload = {
notification: {
title: title,
body: body,
}
};
admin.messaging().sendToDevice(deviceToken, payload);
return Promise.all([
/* ... */
]).then(() => {
res.status(200).send('ok');
}).catch(err => {
console.log(err.stack);
res.status(500).send('error');
});
});
return parentRef.update(updates);
});
});
如果無法在火力地堡功能的同一個執行多個發送推送通知,那麼我想我將不得不重新構建了一下。如果是這種情況,我歡迎任何提示或示例鏈接,以獲得更好的設計。
完美的作品,謝謝!這也很有道理。由於我現在更像是一個Android開發人員而不是Web Dev,因此我跳過了這些資源 - 但在我嘗試使用更多雲功能之前,我會回頭閱讀這些資源:) –