我有一项任务是使用Firebase进行云提醒。我的数据库中有提醒的时间戳。所以我需要在那时发送通知。
在Firebase测试控制台中,有一个选项可以在特定时间内发送通知,但我在MessagingOptions
中没有看到此选项。
那么使用Firebase功能实现云提醒的最佳方法是什么? 另外:提醒的时间可以改变或删除。
答案 0 :(得分:1)
取决于您的项目范围。
如果您的项目仅适用于1种类型的移动客户端,例如,只有Android。然后在设备上设置警报,并使用Firebase数据库作为数据持久性,以便用户在安装和设备之间获得完美的体验。
如果您的项目还必须用于网络,并随通知一起发送电子邮件,那么您将必须安排一个cron作业。这里唯一的问题是警报的准确程度。这是重要的细节,因为如果警报需要准确,你将不得不每分钟安排一个cronjob,非常浪费,查询数据库,因此经常会非常快地消耗你的使用配额。此外,移动设备具有节能模式,同时不完全活动,因此推送通知可以被系统延迟直到下一个维护窗口。我的建议是将闹钟范围缩小到30或15分钟。因此,您可以安排cronjobs,在该时间范围内查询数据库中的对象。
为了安排cron作业,我建议您使用下一个official video
要使用FCM发送推送通知,我建议您查看Functions samples on Github
从函数开始的最佳选择是this video
对于您的数据库结构,请参阅下面的示例
{
"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推送后提高性能,应删除相应的对象。
答案 1 :(得分:0)
最简单的解决方案:
找到函数的URL。例如https://us-central1-myappsucks.cloudfunctions.net/myfunctionsuckstoo
使用cron服务创建调度任务。我使用cron-job.org。创建帐户,转到cronjobs选项卡,插入您的网址和时间。
保存并完成。