作为firebase,FCM会立即向Android/IOS设备发送推送通知。是否可以根据用户如何设置事件提醒时间来安排推送通知,就像在Google日历提醒中一样?
例如,用户A设置事件A在10分钟前提醒。用户B将事件B设置为在1分钟前提醒。
我的一种解决方案是每分钟运行一次Cron Job并触发推送通知,但我认为如果有更多的用户,这样做效率不高。有没有办法在Firebase中安排推送通知?
发布于 2021-07-15 14:01:57
您可以创建一个触发FCM通知的函数,然后使用Google Cloud Tasks使用相关负载来触发该函数。要将其分解为简单的步骤:
1.在用户设置事件时添加云任务:
exports.addEvent = functions.https.onCall((data, context) => {
// add data in database
// add a Google Cloud Task
return
// Alternatively, you can add the event directly to database
// and then use Firebase/Realtime DB triggers for Cloud Functions
});您可以传入云任务的触发时长。如果您的事件发生在10小时内,则只需传递36000秒作为参数。10小时后,Cloud任务将触发您发送FCM通知的功能。
2.处理提醒并发送通知:
exports.sendNotifications = functions.https.onRequest((req, res) => {
// read payload from req.body
// process and send FCM notification
});您应该在Google Cloud Task中添加您的sendNotifications函数的URL。您可以在文档中阅读有关creating HTTP target tasks的更多信息。
总结一下流程:
发布于 2021-07-15 14:23:19
您可以使用firebase云消息传递中的调度函数来调度您的FCM推送通知
参考:https://firebase.google.com/docs/functions/schedule-functions?hl=en
您可以使用计划功能:
functions.pubsub.schedule().onRun()这将在cloudscheduler中添加主题,您可以定义运行该主题的频率。
但问题是,firebase只允许你在按需付费计划(Blaze计划)上使用它。
在我的例子中,我做了以下工作:
https://stackoverflow.com/questions/68388542
复制相似问题