【问题标题】:How to send a FCM when a time event occurs in the database?当数据库中发生时间事件时如何发送 FCM?
【发布时间】:2016-05-26 12:32:57
【问题描述】:

我很肯定,当记录添加到数据库或发生其他一些数据库事件时,我可以发送 Firebase 云消息。我的问题是,如果我有一条记录需要在某个时间向某组设备发送通知,我可以轻松做到这一点吗?这是我可以在 Google App Engine 上做的事情吗?

示例:

我有一个包含不同时间值的记录列表。当该记录的时间值等于服务器机器的时间值时,发送消息。

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-cloud-messaging


    【解决方案1】:

    这里没有隐藏的魔法。您必须编写代码来侦听数据库中的更改,然后调用 Firebase Cloud Messaging。

    ref.on('child_added', function(snapshot) {
      request({
         url: 'https://fcm.googleapis.com/fcm/send',
         method: 'POST',
         headers: {
           'Content-Type' :' application/json',
           'Authorization': 'key=AI...8o' 
         },
         body: JSON.stringify(
           { data: {
               message: "your message"
             },
             to : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
           }
         )
       }, function(error, response, body) {
         if (error) { 
           console.error(error); 
         }
         else if (response.statusCode >= 400) { 
           console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage); 
         }
         else {
           console.log('Message sent');
         }
       });      
    })
    

    上面的 JavaScript 的 sn-p 将在代码中运行并调用 Firebase Cloud Messaging HTTP endpoint to send a message

    另见:

    【讨论】:

    • 谢谢弗兰克!我可以在应用服务器/Google Apps Engine 上运行它吗? Google Apps Engine 是否会持续侦听 Firebase 服务器的时间?例如,如果我在服务器上设置数据侦听器以侦听添加的数据,然后在该时间发生时触发消息。这看起来实际上只反映了何时添加数据项,而不是何时出现下午 6:00。
    • 啊...我错过了有关基于时间的触发的部分。为此,您需要在特定时间触发它(即使用 cron 作业)或运行一个简单的优先级队列。
    • 太棒了。这就是我在挖掘更多资源后的想法。谢谢!
    • 此方法使用需要计费的请求,因为 Firebase 认为它可能是网络外呼叫。有没有不需要计费的方法来做到这一点?
    猜你喜欢
    • 2019-06-07
    • 2018-03-25
    • 2021-02-07
    • 2019-01-19
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多