Я хочу запускать приложение в фоновом режиме автоматически каждую 1 минуту (я использую TaskManager - Expo) - PullRequest
0 голосов
/ 28 января 2020

Я использую приложение expo с android и хочу запустить мое приложение в фоновом режиме c, фон задач должен запускать приложение каждые 1 минуту, я использую с TaskManager - Expo I Я новичок в экспо, реагирую на натив, и мне нужна помощь с этой проблемой, потому что это так сложно для меня.

Чего не хватает в моем коде или что нужно исправить там, чтобы он работал?

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

Я также вызываю "registerFetchTask" в приложении. js:

import {registerFetchTask} из './helpers/registerFetchTask'

registerFetchTask ();

и это сам код:

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

const FETCH_TASKNAME = 'test_task'
const INTERVAL = 60

function test() {
    console.log('function is running')
}

export async function registerFetchTask() {
    TaskManager.defineTask(FETCH_TASKNAME, test);

    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 === FETCH_TASKNAME) == null) {
                console.log("Registering task");
                await BackgroundFetch.registerTaskAsync(FETCH_TASKNAME);

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

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

}
...