Выполнение задачи каждый час, даже когда приложение закрыто в expo

#react-native #expo #scheduler

#react-native #expo #планировщик

Вопрос:

Мне нужно извлекать данные из api и обновлять в базе данных SQLite каждый час (например, резервное копирование и просмотр в автономном режиме).

Я пробовал TaskManager с BackgroundFetch для запуска задачи в фоновом режиме, но он запускается только тогда, когда приложение свернуто, а не когда приложение завершено.

Существующий код

 import * as BackgroundFetch from "expo-background-fetch";
import * as TaskManager from "expo-task-manager";

export async function registerTask() {

TaskManager.defineTask(TASKNAME,taskFunction);

const status = await BackgroundFetch.getStatusAsync();

switch (status) {
  case BackgroundFetch.Status.Restricted:
  case BackgroundFetch.Status.Denied:
    console.log("Background execution is disabled");
    return;

  default: {
    console.debug("Background execution allowed");

    let tasks = await TaskManager.getRegisteredTasksAsync();
    if (tasks.find((f) => f.taskName === TASKNAME) == null) {
      console.log("Registering task");
      await BackgroundFetch.registerTaskAsync(TASKNAME,{
        minimumInterval: INTERVAL,
        startOnBoot : true,
        stopOnTerminate : false
      });

      tasks = await TaskManager.getRegisteredTasksAsync();
      console.debug("Registered tasks", tasks);
    } else {
      console.log(`Task ${TASKNAME} already registered, skipping`);
    }

    // console.log("Setting interval to", INTERVAL);
    // await BackgroundFetch.setMinimumIntervalAsync(INTERVAL);
  }
}
}

 

В App.js

 registerTask();
 

Мне действительно нужно что-то для работы как на переднем плане, так и на заднем плане, а также при закрытии приложения.

Заранее спасибо.

Примечание: требуется решение, совместимое с Expo