React Native中的后台服务

时间:2017-12-10 17:03:31

标签: javascript android reactjs react-native mobile

我正在使用Firebase,而我的应用程序在后台,我想在数据库有新数据时,会按下通知,如下所示:

message.on('child_added', function(data) {
  pushNotification(data);
});

我在Google上搜索并找到了这个库: https://github.com/vikeri/react-native-background-job

一切正常,我的后台工作:

const newMessageJob = {
   jobKey: "newMessageJob",
   job: () => {
     pushNotification(newMessage);
   }
};
BackgroundJob.register(backgroundJob);

但问题出在这里,它只在固定时间调用(看起来像setInterval):

BackgroundJob.schedule({
  jobKey: "newMessageJob",
  period: 1000,
  timeout: 1000,
  exact: true
});

但是我希望它能够动态工作(在添加新数据时触发后台作业),那么我该如何解决这个问题呢?

感谢。

1 个答案:

答案 0 :(得分:2)

应用程序关闭时的定期后台任务现在可以通过react native queuereact native background task在纯JS(不需要本机代码)的跨平台上解决,但是您想要做什么(运行正在进行中)目前在React Native中不可能在后台服务而不是周期性任务(并且根据我的理解,甚至没有一般的方法可以本地执行此操作,应用程序使用解决方法)。

跨平台后台任务的当前限制如下:

  • 任务执行之间的最短时间间隔为~15分钟。
  • 后台任务的超时限制为30秒。
  • 任务时间表是近似值。 iOS / Android使用电池寿命,当前CPU负载等来确定是否可以执行计划任务或者是否应该延迟执行或甚至取消执行。它通常会在您需要时运行,但不要期望时间准确。