While developping my react native app, I need to do a periodic background fetch to another server.So I import 2 class from expo :
import * as BackgroundFetch from 'expo-background-fetch';import * as TaskManager from 'expo-task-manager';
and initialize my background task :
const fetchFunc = async () => { try{ console.log("Hi from fetch function !") return BackgroundFetch.BackgroundFetchResult.NoData; } catch(err) { return BackgroundFetch.BackgroundFetchResult.Failed; }}
Register this task :
async function registerBackgroundFetchAsync() { try{ await BackgroundFetch.registerTaskAsync("func-fetch", { minimumInterval: 5, // 5 second }) console.log("background fetch enabled") } catch(err){ console.error(err); }}
and create a function to execute all of them :
async function initBackgroundFetch() { if(!TaskManager.isTaskDefined("func-fetch")){ TaskManager.defineTask("func-fetch", fetchFunc) } await registerBackgroundFetchAsync();}
Now, I try to launch it when my component is mounted (I use class and typescript) :
class MainPage extends Component{ componentDidMount() { initBackgroundFetch(); } . . .}
But in my console output I just got the "background fetch enabled" from the registration...I think that my initBackgroundFetch is in the wrong place, but can't find where I need to put it.
PS : my expo diagnostics
Expo CLI 5.0.3 environment info:System: OS: Linux 5.15 Kali GNU/Linux Rolling 2021.4 Shell: 5.8 - /usr/bin/zshBinaries: Node: 14.16.1 - ~/.nvm/versions/node/v14.16.1/bin/node npm: 8.1.0 - ~/.nvm/versions/node/v14.16.1/bin/npmnpmPackages: expo: ^43.0.3 => 43.0.3 react: 17.0.1 => 17.0.1 react-dom: 17.0.1 => 17.0.1 react-native: 0.64.3 => 0.64.3 react-native-web: 0.17.1 => 0.17.1 npmGlobalPackages: expo-cli: 5.0.3Expo Workflow: managed