首页 > 解决方案 > 使用 Firebase 和 Cloud 功能在特定时间发送推送通知

问题描述

我创建了一个平台,健身教练可以在其中向他们的客户发布锻炼信息。他们有一周的计划,他们可以完全填满一周,但训练只会在每天 00:00 发布。

我想添加一个功能:在每天锻炼时的特定时间(教练将决定何时)配置推送通知。 例如每天早上 08:01 或每天下午 5:35

事实上,如果我使用这个逻辑,我应该在一天中的每一分钟都安排一个函数(这太多了)。例如,有没有办法在每天 00:00 启动一个功能,如果教练启用了这个功能,它可以在我的数据库中查找。然后,延迟启动推送通知

(例如:我的函数看到一个教练想在 08:00 发送通知,另一个在 09:30 发送通知。该函数可以发送延迟 8 小时的推送通知,另一个延迟 9 小时 30 分钟的时间)

您对我如何实现此功能有任何想法吗?

标签: androidiosnode.jsfirebasegoogle-cloud-functions

解决方案


我已经在我拥有的应用程序中实现了类似的东西。我在 Firebase 中使用 Cloud Scheduler,每 10 分钟运行一次。

当我的用户提交特定时间的消息时,我会在数据库(实时数据库)中记录该时间。

云调度程序启动的云功能循环通过该数据库,查看用户输入的时间。如果时间在最后 10 分钟内,则发送消息并从该表中删除条目。

要使用调度程序调用云函数,您可以按如下方式创建函数:

exports.findScheduledEvents = functions.pubsub.topic('eventSchedule').onPublish(() => {

其中 eventSchedule 是我的云计划的名称。

Firebase 仅按您拥有的云计划数量收费,而不是您运行它们的频率。对我来说,10 分钟就足够了,但你可以每分钟运行一次。请注意不要使循环通过的表格太大。正如我所说,我删除了该条目,以便特定表永远不会变得太大并且成本很低。


推荐阅读