logs на симуляторе iOS (iPhone 7 Plus):
Проблема
Даже после минимизации приложения и позволяя ему перейти в фон, задача фона избрать никогда не запускается - консоль никогда не регистрирует
import { Text, View, AppState } from 'react-native';
import * as TaskManager from 'expo-task-manager';
import * as BackgroundFetch from 'expo-background-fetch';
const BACKGROUND_FETCH_TASK = 'background-fetch-demo';
TaskManager.defineTask(BACKGROUND_FETCH_TASK, async () => {
console.log('
// Do background work here, like fetching data or updating logs
return BackgroundFetch.BackgroundFetchResult.NewData;
});
export default function App() {
const [appState, setAppState] = useState(AppState.currentState);
const [time, setTime] = useState(new Date().toLocaleTimeString());
useEffect(() => {
const subscription = AppState.addEventListener('change', nextAppState => {
setAppState(nextAppState);
console.log('
});
const interval = setInterval(() => {
const now = new Date().toLocaleTimeString();
console.log('
setTime(now);
}, 5000);
registerBackgroundFetchAsync();
return () => {
subscription.remove();
clearInterval(interval);
};
}, []);
return (
);
}
async function registerBackgroundFetchAsync() {
const status = await BackgroundFetch.getStatusAsync();
console.log('
if (status === BackgroundFetch.BackgroundFetchStatus.Restricted || status === BackgroundFetch.BackgroundFetchStatus.Denied) {
console.log('
return;
}
const tasks = await TaskManager.getRegisteredTasksAsync();
const alreadyRegistered = tasks.find(task => task.taskName === BACKGROUND_FETCH_TASK);
if (!alreadyRegistered) {
await BackgroundFetch.registerTaskAsync(BACKGROUND_FETCH_TASK, {
minimumInterval: 15 * 60, // 15 minutes
stopOnTerminate: false,
startOnBoot: true,
});
console.log('
} else {
console.log('
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... app-on-ios