Tengo una aplicación independiente de EAS que se creó con Expo SDK 43. Estoy tratando de solicitar permisos para acceder a la ubicación en segundo plano de un usuario (ubicación cuando la aplicación no está abierta pero se ejecuta en segundo plano)
Cuando la aplicación compila, la consola arroja esta advertencia:
TaskManager: Task "background-location-task" has been executed but looks like it is not defined. Please make sure that "TaskManager.defineTask" is called during initialization phase.También arroja esta advertencia:
[Unhandled promise rejection: Error: Task 'background-location-task' not found for app ID 'mainApplication'.]Creo que estoy configurando correctamente las ubicaciones de fondo, pero parece que no estoy ejecutando algo correctamente. A continuación se muestra mi código de cómo solicito ubicaciones de fondo.
Nota: tengo la solicitud en segundo plano en un useEffect, y el Administrador de tareas fuera del useEffect dentro del archivo después de las solicitudes de ubicación en primer plano.
// aplicación.json e información.Plist:
"ios":{ ... "UIBackgroundModes":[ "location", "fetch" ] }//Dentro del archivo principal
import * as Location from 'expo-location'; import * as TaskManager from 'expo-task-manager' import * as BackgroundFetch from 'expo-background-fetch const LOCATION_TASK_NAME = 'background-location-task'; useEffect(()=>{ async function getBackgroundLocationAsync(){ let {status} = await Location.requestBackgroundPermissionsAsync() if(status!=='granted'){ setErrorMsg('Permission to access background location was denied') return; } if(status ==='granted'){ await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME,{ accuracy: Location.Accuracy.Balanced, }) } getBackgroundLocationAsync() }, [], ) TaskManager.defineTask(LOCATION_TASK_NAME,({data, error})=>{ if(error){ return; } if(data){ const{locations}=data } })