android - 使用 Firebase 和 Cloud 功能在特定时间发送推送通知
问题描述
我创建了一个平台,健身教练可以在其中向他们的客户发布锻炼信息。他们有一周的计划,他们可以完全填满一周,但训练只会在每天 00:00 发布。
我想添加一个功能:在每天锻炼时的特定时间(教练将决定何时)配置推送通知。 例如每天早上 08:01 或每天下午 5:35
- 我知道可以使用 firebase 设置预定功能,但我不确定这样做是否正确。
事实上,如果我使用这个逻辑,我应该在一天中的每一分钟都安排一个函数(这太多了)。例如,有没有办法在每天 00:00 启动一个功能,如果教练启用了这个功能,它可以在我的数据库中查找。然后,延迟启动推送通知
(例如:我的函数看到一个教练想在 08:00 发送通知,另一个在 09:30 发送通知。该函数可以发送延迟 8 小时的推送通知,另一个延迟 9 小时 30 分钟的时间)
您对我如何实现此功能有任何想法吗?
解决方案
我已经在我拥有的应用程序中实现了类似的东西。我在 Firebase 中使用 Cloud Scheduler,每 10 分钟运行一次。
当我的用户提交特定时间的消息时,我会在数据库(实时数据库)中记录该时间。
云调度程序启动的云功能循环通过该数据库,查看用户输入的时间。如果时间在最后 10 分钟内,则发送消息并从该表中删除条目。
要使用调度程序调用云函数,您可以按如下方式创建函数:
exports.findScheduledEvents = functions.pubsub.topic('eventSchedule').onPublish(() => {
其中 eventSchedule 是我的云计划的名称。
Firebase 仅按您拥有的云计划数量收费,而不是您运行它们的频率。对我来说,10 分钟就足够了,但你可以每分钟运行一次。请注意不要使循环通过的表格太大。正如我所说,我删除了该条目,以便特定表永远不会变得太大并且成本很低。
推荐阅读
- mongodb - 查询生成的没有模型的 mongo-version 集合
- javascript - 如何从代理对构造 JavaScript 中的 UTF-16 字符?
- azure - Azure SAS 令牌 AzCopy 身份验证问题
- mac-catalyst - Mac Catalyst 上的 UIApplicationDelegate 调用
- gwt - 如何在 Gradle 项目中使用 GWT 快照构建?
- swift - Firebase 上传图片 | 使用 NSProgress
- python - 主机 0.0.0.0 (flask) 上的 Docker 连接被拒绝
- sql - Snowflake 是否等同于 SQL WITH(NOLOCK)
- r - R dplyr 使用条件有效地创建多个列
- javascript - 制表符和上下文菜单双击右键问题