由于 firebase FCM 会立即向 Android/IOS 设备发送推送通知。是否可以根据用户在 Google 日历提醒中设置事件提醒时间的方式来安排推送通知?
例如,用户 A 将事件 A 设置为在 10 分钟前提醒。 用户 B 设置事件 B 以在 1 分钟前提醒。
我拥有的一个解决方案是每分钟运行一次 Cron Job 并触发推送通知,但如果有更多用户,我认为这不会有效。 有没有办法在 Firebase 中安排推送通知?
答案 0 :(得分:0)
您可以创建一个触发 FCM 通知的函数,然后使用 Google Cloud Tasks 使用相关负载触发该函数。用简单的步骤打破它:
1.当用户设置事件时添加 Cloud Task:
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
});
您可以传递应触发 Cloud Tasks 的持续时间。如果您的事件发生在 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 的更多信息。
总结流程:
答案 1 :(得分:0)
您可以使用 firebase 云消息传递中的日程安排功能来安排您的 FCM 推送通知
参考:https://firebase.google.com/docs/functions/schedule-functions?hl=en
您可以使用日程功能:
functions.pubsub.schedule().onRun()
这将在 cloudcheduler 中添加主题,您可以定义它必须运行的频率。
但问题是,firebase 允许您仅将其用于现收现付计划(Blaze 计划)
就我而言,我执行了以下操作: