Firebase会在特定时间发送通知

时间:2018-02-08 13:17:25

标签: firebase firebase-cloud-messaging google-cloud-functions

我有一项任务是使用Firebase进行云提醒。我的数据库中有提醒的时间戳。所以我需要在那时发送通知。

在Firebase测试控制台中,有一个选项可以在特定时间内发送通知,但我在MessagingOptions中没有看到此选项。

那么使用Firebase功能实现云提醒的最佳方法是什么?  另外:提醒的时间可以改变或删除。

2 个答案:

答案 0 :(得分:1)

取决于您的项目范围。

  • 如果您的项目仅适用于1种类型的移动客户端,例如,只有Android。然后在设备上设置警报,并使用Firebase数据库作为数据持久性,以便用户在安装和设备之间获得完美的体验。

  • 如果您的项目还必须用于网络,并随通知一起发送电子邮件,那么您将必须安排一个cron作业。这里唯一的问题是警报的准确程度。这是重要的细节,因为如果警报需要准确,你将不得不每分钟安排一个cronjob,非常浪费,查询数据库,因此经常会非常快地消耗你的使用配额。此外,移动设备具有节能模式,同时不完全活动,因此推送通知可以被系统延迟直到下一个维护窗口。我的建议是将闹钟范围缩小到30或15分钟。因此,您可以安排cronjobs,在该时间范围内查询数据库中的对象。

    1. 为了安排cron作业,我建议您使用下一个official video

    2. 要使用FCM发送推送通知,我建议您查看Functions samples on Github

    3. 从函数开始的最佳选择是this video

    4. 对于您的数据库结构,请参阅下面的示例



{
  "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)

最简单的解决方案:

  1. 找到函数的URL。例如https://us-central1-myappsucks.cloudfunctions.net/myfunctionsuckstoo

  2. 使用cron服务创建调度任务。我使用cron-job.org。创建帐户,转到cronjobs选项卡,插入您的网址和时间。

  3. 保存并完成。