Android 使用Firebase和云功能在特定时间发送推送通知

Android 使用Firebase和云功能在特定时间发送推送通知,android,ios,node.js,firebase,google-cloud-functions,Android,Ios,Node.js,Firebase,Google Cloud Functions,我创建了一个平台,健身教练可以在其中向他们的客户发布训练。 他们有一个本周的计划,他们可以完全填满本周,但训练只会在每天的00:00发布 我想添加一项功能:在每天进行训练的特定时间(教练将决定何时)配置推送通知。 例如,每天早上08:01或下午5:35 我知道可以用firebase设置预定功能, 但我不确定这样做是否正确 事实上,如果我使用这种逻辑,我应该每天每分钟都安排一个函数(这太多了)。 例如,是否有一种方法可以在每天00:00启动一个函数,如果Coach启用了此功能,则可以查看我的数

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

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

  • 我知道可以用firebase设置预定功能, 但我不确定这样做是否正确
事实上,如果我使用这种逻辑,我应该每天每分钟都安排一个函数(这太多了)。 例如,是否有一种方法可以在每天00:00启动一个函数,如果Coach启用了此功能,则可以查看我的数据库。然后,延迟启动推送通知

(例如:我的函数看到coach希望在08:00和09:30发送通知。该函数可以发送推送通知,延迟8小时,另一次延迟9小时30分钟)


你知道我如何实现这个功能吗?

我已经在我的一个应用程序中实现了类似的功能。我在Firebase中使用云调度程序,每10分钟运行一次

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

云调度器启动的云函数在数据库中循环,查看用户输入的时间。如果时间在最后10分钟内,则发送消息,我将从该表中删除该条目

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

exports.findScheduledEvents = functions.pubsub.topic('eventSchedule').onPublish(() => {
其中eventSchedule是我的云计划的名称


Firebase只对您拥有的云计划数量收费,而不是您运行它们的频率。对我来说,10分钟就足够了,但你可以每分钟跑一次。只是要小心,不要使循环通过的桌子太大。正如我所说,我删除了条目,这样特定的表就不会变得太大,而且成本也很低。

我也立即想到了这种方法,所以感谢Warren的精彩报道@KevinB:您可能还想阅读Doug关于的文章,其中包含更多使用云任务的示例代码。