es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La aplicación iOS 15 no se inicia en estado cerrado con cambio de ubicación.

He agregado los modos de fondo para la ubicación en mi aplicación SS aquí.

Pero aún así, la aplicación no se inicia con la clave de opciones de lanzamiento:
UIApplication.LaunchOptionsKey.location.

Aquí está el código de mi delegado de la aplicación:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Punto de personalización después del lanzamiento de la aplicación.
    addItem(name: "LaunchOptions: \(String(describing: launchOptions))")
    if let launchOptions = launchOptions {
        if launchOptions[UIApplication.LaunchOptionsKey.location] != nil {
            startLocationMonitoring()
        }
    }
    print("LaunchOptions: \(String(describing: launchOptions))")
    return true
}

func startLocationMonitoring() {
    locationManager?.delegate = nil
    locationManager = nil
    locationManager = CLLocationManager()
    locationManager?.delegate = self
    locationManager?.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    locationManager?.distanceFilter = 1.0 // metros
    locationManager?.allowsBackgroundLocationUpdates = true
    locationManager?.activityType = .otherNavigation
    locationManager?.pausesLocationUpdatesAutomatically = false
    authStatusCheck()
    locationManager?.startUpdatingLocation()
}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(locations)
    if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) {
        for location in locations {
            appDelegate.addItem(newLocation: location)
        }
    }
}

La función addItem agrega el cambio de ubicación o los registros a Core Data.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basándose en el código que proporcionaste, hay algunas posibles razones por las que la aplicación no se está iniciando con la clave de opciones de lanzamiento para la ubicación:

    1. Permisos de ubicación: Asegúrate de que tu aplicación tenga los permisos de ubicación necesarios para utilizar actualizaciones de ubicación en segundo plano. Verifica si el usuario ha concedido permiso para acceder a la ubicación siempre, accediendo a la propiedad authorizationStatus de CLLocationManager.
    2. Pruebas en un simulador: Las pruebas de actualizaciones de ubicación en segundo plano en un simulador no son confiables. Intenta probar en un dispositivo físico en su lugar.

    3. Datos de ubicación inconsistentes: Si los datos de ubicación no se actualizan con frecuencia o no son precisos, es posible que el sistema no los considere una actualización de ubicación válida y los ignore.

    4. Otras configuraciones de la aplicación: Puede haber otras configuraciones de la aplicación que estén afectando las actualizaciones de ubicación en segundo plano, como el ahorro de batería o el modo de bajo consumo. Asegúrate de que estas configuraciones no estén afectando las actualizaciones de ubicación en segundo plano de tu aplicación.

    Si has verificado y asegurado que los problemas anteriores no están causando el problema, puedes considerar revisar tu código nuevamente y depurar el problema.

Comments are closed.