Firebase Server SDK - 如何安排任务?

时间:2016-08-14 08:02:17

标签: android firebase

我被告知要安排在云端中的任务来为Firebase中的实时数据库执行任务我需要使用Server SDK。

我们假设我使用以下代码将数据保存到Firebase数据库:

DatabaseReference usersRef = ref.child("users");

Map<String, User> users = new HashMap<String, User>();
users.put("alanisawesome", new User("June 23, 1912", "Alan Turing"));
users.put("gracehop", new User("December 9, 1906", "Grace Hopper"));

usersRef.setValue(users);

但我希望明天将其作为任务上传。我的意思是,这将节省明天而不是此代码运行的瞬间。

我已准备好Calendar

Calendar cal = Calendar.getInstance();
cal.add(DAY_OF_MONTH,1); //This could be wrong, but I'm just telling you I have a Calendar ready, so ignore any errors in this code

那么,如何使用Firebase Server SDK保存任务?文档没有为此提供明确的答案,因为我唯一能看到的就是像实时数据库一样保存数据。

3 个答案:

答案 0 :(得分:1)

如果您有第三方服务器(使用Firebase SDK,服务器SDK),您可以轮询所有已保存的数据,并调用TImerService或CRON JOB,使其将列表保留到Firebase实时数据库。

这取决于您的服务器实现,但上面指出的排队实现可以在您的方案中使用。

可以在此StackOverflow page上找到调用Web服务的CRON作业示例(在您的情况下,将所有排队项目保留到Firebase的作业)。对于TimerService,您可以参考其documentation

快乐的编码!

答案 1 :(得分:0)

创建广播接收器并在清单中定义它。 覆盖onRecieve并将firebase代码放在那里。 然后在清单中定义接收器。 使用Receiver创建pendingIntent,并使用setExact()方法将其设置在AlarmManager中,并传入pendingIntent。

答案 2 :(得分:0)

目前,没有方式可以让您在Firebase的服务器上运行代码。有两种选择可以解决这个问题:

  1. 您可以使用Firebase Queue并在Node.js中运行代码
  2. 您可以使用其他库,例如Microsoft Azure我还没有尝试过,我不确定它是否提供Android的作业调度
  3. 但是,Firebase正在处理名为 Firebase触发器的内容,这将解决我们的问题,但仍未发布,但未确认发布日期。