¿Cuál es la mejor manera para que una aplicación basada en geolocalización actualice la ubicación del usuario?

Depende de qué tipo de precisión necesites.

iPhone y Android tienen el concepto de “geofences”: alertas que activan la aplicación si cruzas un límite, te acercas demasiado a algo. Pero no son muy precisos, solo sirven para unos cientos de metros más o menos.

Para una precisión real, debe obligar al teléfono a encender el GPS y activar su aplicación con una actualización cada vez que ocurra un cambio predeterminado (por ejemplo, moverse una distancia suficiente desde la última lectura para que valga la pena tomar una nueva lectura, después de un período de tiempo).

Esto es más difícil de lo que parece, porque el sistema operativo del teléfono combate los intentos de encender el GPS cuando la aplicación no se está utilizando, porque el GPS es un consumidor de energía: agota la batería más rápido. Se necesita mucho tiempo y esfuerzo para bloquear todas las formas curiosas en que el sistema operativo intenta cerrar sus intentos de obtener actualizaciones en segundo plano. En particular, hay un modo de falla muy sutil en Android que me llevó mucho tiempo descubrir.