首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用实时数据库/分析触发器对Firebase函数使用调度程序?

如何使用实时数据库/分析触发器对Firebase函数使用调度程序?
EN

Stack Overflow用户
提问于 2019-05-02 16:05:49
回答 1查看 1.8K关注 0票数 2

我正在处理Firebase函数,以发送触发的推送通知。现在,当用户在我的应用程序中触发"IAP“事件时,我的函数就会发送一个推送。

代码语言:javascript
复制
'use strict';

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendIAPAnalytics = functions.analytics.event('IAP').onLog((event) => {

    const user = event.user;
    const uid = user.userId; // The user ID set via the setUserId API.   

    sendPushToUser();

    return true;
});


function sendPushToUser(uid) {
  // Fetching all the user's device tokens.

     var ref = admin.database().ref(`/users/${uid}/tokens`);

     return ref.once("value", function(snapshot){
         const payload = {
              notification: {
                  title: 'Hello',
                  body: 'Open the push'
              }
         };

        console.log("sendPushToUser ready");

         admin.messaging().sendToDevice(snapshot.val(), payload)

    }, function (errorObject) {
        console.log("The read failed: " + errorObject.code);
    });
}

此功能工作,推送和接收。

我读了一些关于Firebase函数调度的新闻:

我理解,它只适用于HTTP触发器ou PUB/SUB触发器。因此,现在总是不可能通过编写实时数据库或触发分析事件来延迟触发函数。

我说的对吗?还是有诡计?

我什么也没读到。

编辑:正式文档https://firebase.google.com/docs/functions/schedule-functions

我的语法是错误的,但我需要这样的东西:

代码语言:javascript
复制
function sendPushToUser(uid) {

     var ref = admin.database().ref(`/users/${uid}/tokens`);

     return ref.once("value", function(snapshot){
         const payload = {
              notification: {
                  title: 'Hello',
                  body: 'Open the push'
              }
         };


    functions.pubsub.schedule('at now + 10 mins').onRun((context) => {
       admin.messaging().sendToDevice(snapshot.val(), payload)

    })

    }, function (errorObject) {
        console.log("The read failed: " + errorObject.code);
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 16:12:36

没有内置的方式来重新触发云函数的延迟。如果您想要这样的功能,您必须自己构建它,例如,安排一个函数定期运行,然后查看需要触发哪些任务。见我在这里的答案:延迟Google云功能

正如道格所评论的,您可以使用云任务来安排单独的调用。您可以动态地创建任务,然后让它调用一个HTTP函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55956317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档