【问题标题】:Send push notification at specific time with Firebase and Cloud functions使用 Firebase 和 Cloud 功能在特定时间发送推送通知
【发布时间】:2021-04-12 02:52:30
【问题描述】:

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

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

  • 我知道可以使用 firebase 设置计划函数, 但我不确定这样做是否正确。

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

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

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

【问题讨论】:

    标签: android ios node.js firebase google-cloud-functions


    【解决方案1】:

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

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

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

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

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

    其中 eventSchedule 是我的 Cloud Schedule 的名称。

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

    【讨论】:

    • 我也立即想到了这种方法,因此感谢 Warren 的精彩文章。 @KevinB:您可能还想阅读 Doug 在 medium.com/firebase-developers/… 上的文章,其中包含更多使用 Cloud Tasks 的示例代码。
    猜你喜欢
    • 2021-03-18
    • 2018-06-01
    • 2020-02-02
    • 2017-11-16
    • 1970-01-01
    • 2020-09-09
    • 2018-09-22
    • 2018-07-19
    • 2017-10-08
    相关资源
    最近更新 更多