Whats the correct way to invoke a registered task?

Viewed 89

I am using expo version 41.0.0 and i defined task and export the registered task. This is how the code looks like

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

const TASK_NAME = "BACKGROUND_TASK";

TaskManager.defineTask(TASK_NAME, () => {
    try {
        // fetch data here...
        const receivedNewData = "Simulated fetch " + Math.random()
        console.log("My task ", receivedNewData)
        return receivedNewData
            ? BackgroundFetch.Result.NewData
            : BackgroundFetch.Result.NoData

    } catch (err) {
        return BackgroundFetch.Result.Failed
    }
});

export const RegisterBackgroundTask = async () => {
    try {
        await BackgroundFetch.registerTaskAsync(TASK_NAME, {
            minimumInterval: 5, // seconds,
        });
        console.log("Task registered")
    } catch (err) {
        console.log("Task Register failed:", err)
    }
} 

and this is how I invoke the registered task

import { RegisterBackgroundTask } from '../../helper/background-task';

const SomeComponent = ({ ...props }) => {
   RegisterBackgroundTask();
  ...rest of the code  

  return (
     <View>
       other stuff here...
     </View>

  )
}

PS: I run the app through Expo and I am using IOS

Is this the correct way to invoke registered task, or can it be called inside a lifecycle method like useEffect ?

0 Answers
Related