allowsbackgroundlocationupdates ios swift background location

allowsbackgroundlocationupdates - ios background fetch



fondo de ubicación de actualización periódica Swift 3.0 iOS 10 (2)

El evento de cambio de ubicación significativo solo se desencadena cuando hay un cambio de ubicación (es decir, cambio de la torre de telefonía celular). Deberías utilizar la función de obtención de fondos en lugar del cambio de ubicación para reactivar la aplicación si lo que necesitas es descargar o cargar datos periódicamente:

application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

luego manejar

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

Estoy haciendo una aplicación que cuando ingresa en segundo plano necesito que envíe al servidor algunos datos periódicos. Para despertar desde el fondo, uso la ubicación de fondo de actualización significativa (batería más baja). Noté que la ubicación se actualiza cuando la celda del teléfono desde wifi / 3g o cuando 3g cambia la torre de la celda, pero mi problema es que si el usuario no se mueve (y luego la torre de la celda no cambia) la ubicación no se actualiza y el app doest wake up y luego no puedo enviar datos al servidor.

¿Conoces algún método para resolver este problema?

Hago todos aquellos en el archivo AppDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate , CLLocationManagerDelegate{ var manager = CLLocationManager() func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { manager.desiredAccuracy = kCLLocationAccuracyBest manager.delegate = self manager.requestAlwaysAuthorization() manager.allowsBackgroundLocationUpdates = true return true } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){ sendDataToServer() } func applicationDidEnterBackground(_ application: UIApplication) { manager.startMonitoringSignificantLocationChanges() } }