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