我有一个使用Firebase进行云提醒的任务。我的DB中有一个提醒的时间印章。因此,我需要在当时发送通知。
在Firebase测试控制台中,有一个选项可以在某些时间发送通知,但是我在MessagingOptions
中没有看到此选项。
那么,使用Firebase功能插入云提醒的最佳方法是什么? 另外:完全可以更改或删除提醒时间。
取决于项目范围。
-
例如,如果您的项目仅适用于一种类型的移动客户端,则仅是Android。然后在设备上设置警报,然后使用firebase数据库作为数据持久性,以使用户在安装和设备之间具有完美的体验。
-
如果您的项目还必须用于Web,并将电子邮件与通知一起发送,则您必须安排CRON工作。这里唯一的问题是警报必须有多准确。这是重要的细节,因为如果需要确切的警报,您将必须每分钟安排一个Cronjob,浪费令人难以置信的浪费,请查询数据库,因此通常会很快消耗您的使用配额。此外,移动设备在此期间具有节能模式,同时尚未完全活跃,因此系统可以延迟推送通知,直到下一个维护窗口。我的建议是将警报缩小到30或15分钟的窗口。因此,您可以安排将数据库查询在此时间段内的对象的cronjobs。
-
用于安排CRON工作,建议您阅读此Firebase博客文章
-
用于使用FCM发送推送通知,我建议在GitHub上检查功能样本
-
最适合从功能开始的是此视频
-
以及有关您的数据库结构,请参见下面的示例
-
{
"user_alarms": {
"uid1": {
"pushkey1": {
"full_object": "goes here"
},
"pushkey2": {
"full_object": "goes here"
}
},
"uid2": {
"pushkey3": {
"full_object": "goes here"
},
"pushkey4": {
"full_object": "goes here"
}
}
},
"alarms": {
"pushkey1": {
"reduced_object": "mainly_the_time"
},
"pushkey4": {
"reduced_object": "mainly_the_time"
}
}
}
user_alarms
节点包含每个用户警报,这样用户可以看到所有设置的警报。节点alarms
是原始节点的典型化,并且是每个cron作业中要查询的节点。它包含一个更简单的对象,只有为即将发出的警报(主要是触发时间(执行查询所需的内容。为了在发送FCM推送后提高性能,应删除相应的对象。
最简单的解决方案:
-
找到功能的URL。例如https://us-central1-myappsucks.cloudfunctions.net/myfunctionsuckstoo
-
使用CRON服务创建Schedulea任务。我使用cron-job.org。创建帐户,转到cronjobs选项卡插入您的URL和时间安排。
-
保存并完成。