【发布时间】:2017-12-10 17:03:31
【问题描述】:
我正在使用 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
});
但我希望它动态工作(添加新数据时触发后台作业),那么我该如何解决这个问题?
谢谢。
【问题讨论】:
-
这个问题太宽泛了。如果你正在使用 redux,你可以使用 redux-saga 来做到这一点,例如,或者只是通过制作你自己的简单中间件。如果你不想要任何复杂的东西,你可以在 componentDidMount 中设置回调并调用 setState。在反应中,数据仅从父级传输到子级,因此您需要将其提升到可以将数据作为道具传递给所有需要它的组件的级别。在许多情况下,这将是最顶层的组件。
-
谢谢,但我想在我的应用程序处于后台时触发它,而且我使用的是 MobX,而不是 Redux,我该怎么做?
-
啊,好吧,我一开始误解了你的问题。我想到的第一件事是进行轮询:在到达时将消息推送到队列,并安排后台作业每 N 毫秒触发一次,检查队列中是否有未处理的项目。不过可能有更好的解决方案。
-
这里可以获得相关帮助stackoverflow.com/questions/34687473/…
标签: javascript android reactjs react-native mobile