如何在React Native中实现cron作业?

时间:2019-04-11 07:37:41

标签: react-native

我是本机和实施简单应用程序的新手,其中应用程序将监视手机的时钟时间,并应设置一些标志,以便在用户启动应用程序时通知用户执行某些任务。

我想在React Native应用程序中连续监视移动设备的时钟时间作为后台作业,以便在用户打开应用程序且如果已经过去特定时间时,它应该设置一些标志以做出将来的决定。

经过对博客的一些研究,我发现可以使用react-native-background-task和/或background-timers。但是我发现很难实施它。谁能帮我实现相同的示例。 先感谢您。

1 个答案:

答案 0 :(得分:0)

因此,从您的帖子中,我将假设一些事情。您将要在Android和iOS上进行开发,您只想使用一个插件(而不是自己编写模块)。

不幸的是,除非我弄错了-没有简单的答案,我会解释。

随着Android和iOS的发展,他们开始限制在后台使用Apps,特别是Android进入“打ze”模式,iOS的运行方式与此类似。

对于Android,您需要考虑一些事项,而我将专注于这些事项,因为在实际创建RN应用之前,您需要了解这一点。

打ze模式

  

Android从Android 6.0(API级别23)开始,引入了两个   节电功能可通过管理来延长用户的电池寿命   设备未连接电源时应用程序的行为方式。瞌睡   通过延迟后台CPU和网络来减少电池消耗   设备长时间不使用时的应用活动。   App Standby推迟了与   用户最近没有互动。

     

设备处于打Do状态时,应用访问某些耗电量大的电池   资源延迟到维护窗口。具体的   限制列在“电源管理限制”中。

     

打ze和App Standby管理运行在其上的所有应用程序的行为   Android 6.0或更高版本,无论它们是否专门   定位到API级别23。为确保为用户带来最佳体验,请进行测试   您的应用处于打ze和应用待机模式,并进行必要的操作   调整您的代码。以下各节提供了详细信息。

重要的是,您需要注意:

  

系统不允许同步适配器运行。

     

系统不允许JobScheduler运行。

因此,对于android,首先(可能)您需要确保您的应用程序位于“白名单”中。您可以在此处查看列表的要求:

https://developer.android.com/training/monitoring-device-state/doze-standby

或者,您可以使用如下所示的插件访问维护窗口:

https://github.com/transistorsoft/react-native-background-fetch

测试

Android为您提供了一些工具,主要运行:

$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true

无头JS

您可以签出适合您情况的无头任务:

https://facebook.github.io/react-native/docs/headless-js-android

注意事项:

尽管 Android 指出操作系统本身的行为与所记录的一样,但设备本身可以具有内置的软件,该软件实质上可以杀死后台进程。诺基亚是最糟糕的之一。因此,请注意这一点。