我正在尝试在预定时间向用户发送推送通知。假设他们为一个事件设定了日期,他们希望在 30 分钟前收到通知,那就是我想向他们发送通知的时候。我正在使用Firebase作为我的后端,该项目是使用expo构建的。
我很好奇如果我使用 firebase 云消息传递,我将如何使用 expo 的通知系统,因为它说我需要 firebase 的单独许可(我已经拥有每个用户的 expo 令牌(。我已经研究了节点 cron/schedule 以及反应原生推送通知,但我不确定哪个是最佳解决方案以及我将在哪里部署解决方案(例如运行云函数(。
我假设我需要某种类型的函数来获取令牌、消息正文、标题和日期,然后将其设置为将其调度到服务器或本地。然后,当他们按下按钮接收通知时,将调用该函数。他们还可以更改事件的日期,因此如果用户这样做,则需要切换日期。
任何建议将不胜感激,因为我已经研究了几天,但仍然不确定最佳方法。
一种可能的方法:
-
在后端中,计划每分钟(或每 15 秒(运行一次 cron 作业,并根据数据库检查哪些事件在接下来的 30 分钟内具有开始时间。
-
获得
events
后,找出为这些活动注册的用户并收集他们的用户 ID。 -
正如您提到的,您已经存储了令牌,因此我假设这些令牌存在于针对用户ID的某个表中(例如,
user-id
和tokens
的映射(。查找此表以获取这些用户的令牌。 -
准备通知
payload
并调用firebase
消息以针对令牌发送通知。例如,此时您可以从 Firebase SDK 调用sendToDevice()
函数:firebase.messaging().sendToDevice(tokens, payload);
现在,您可以在后端(例如 Nodejs(中实现这些步骤,也可以为此部署云函数并为此云函数设置调度。
如果您需要任何进一步的帮助,请告诉我!