Flutter-geolocator: geolocator.getCurrentPosition tarda mucho en volver a la posición en IOS

Creado en 30 ago. 2019  ·  72Comentarios  ·  Fuente: Baseflow/flutter-geolocator

getCurrentPosition funciona muy bien en Android, pero en IOS llevó mucho tiempo ejecutarlo. ¿Puedes comprobarlo? Gracias
Plataforma:

  • [x]: iphone: iOS
  • []: robot: Android
ios bug duplicate

Comentario más útil

@babaosoftware Gracias por su esfuerzo. Probé el mismo problema y llegué a la misma conclusión que tú. Trabajaremos en este problema y lo mantendremos informado cuando haya una solución para este problema.

Todos 72 comentarios

Experimentando el mismo problema. No encontré qué está causando la desaceleración hasta ahora, pero usando la Última posición conocida como una solución temporal para mi caso ...

compruebe si su Info.plist tiene 3 claves
NSLocationAlwaysUsageDescription
Tu descripción
NSLocationWhenInUseUsageDescription
Tu descripción
NSLocationAlwaysAndWhenInUseUsageDescription
Tu descripción

El mismo problema aqui. Tuve que degradar a la versión 4.0.3 del complemento de geolocalizador. Cada versión posterior a esa es muy lenta para responder en iOS.
Y sí, @paulobreim tengo todas las cadenas requeridas en Info.plist, de lo contrario no respondería en absoluto.

Utilizo el complemento de ubicación para obtener la ubicación actual. Funciona bien tanto en Android como en IOS.

@ hungtran2492 También estoy usando el complemento de ubicación, es mucho más rápido que esto.

@StijnWoerkom ¿cuál es el motivo del cierre? Este es un error legítimo que está causando problemas a los desarrolladores en la biblioteca de ubicación principal de Flutter.

@ollydixon Probé este problema en varios dispositivos IOS y concluí que el problema estaba más en el dispositivo que en el código. Puedo volver a abrir el problema, pero no veo que ocurra ningún problema con este problema.

@StijnWoerkom, si ayuda, hice una demostración en vivo de la aplicación con 4 usuarios y fue lenta en todos sus móviles. (Todo iOS). Fue un poco incómodo para mí porque el simulador funciona bien, solo en el dispositivo es extremadamente lento.

Usé otra biblioteca y estuvo bien (Ubicación de Flutter).

La versión 4.0.3 funciona bien. De hecho, cambié a esa versión en mi aplicación. Entonces tiene que ser algo en la propia biblioteca. Hice pruebas con diferentes iPhones, es consistente, así que dudo que sea el dispositivo.

@ollydixon Gracias por tu respuesta. Lamento tu fracaso con la demostración. Reabrí el problema y profundizaré en esto. ¿Puedes decirme qué versión estabas usando?

@StijnWoerkom no se preocupe, sabían que era una versión alfa. Fue 5.1.3.

Cualquier versión posterior a la 4.0.3 tiene el problema. Entonces debe ser algo introducido en 5.0.0.

@babaosoftware En la versión 5.0.0, convertimos la versión IOS de Swift a Objective-C, reduciendo considerablemente el tamaño del binario final, además de resolver algunos problemas de compatibilidad con otros complementos basados ​​en Objective-C.

@StijnWoerkom No estoy cuestionando la necesidad de la conversión, solo digo que creó este problema y doy una pista de dónde alguien podría comenzar a investigarlo.

Noté que ayer me dijiste que los problemas comenzaron con la versión 5.0.0. Estoy investigando todas las funciones que agregamos con la versión para determinar cuál es la causa del problema.

Permítanme sugerir una alternativa para aislar el problema, si realmente existe.
Podemos hacer un pequeño programa con la función geolocator.getCurrentPosition solamente, y todos pueden probar este programa y medir el tiempo que se ejecuta.
¿Qué piensas?

@paulobreim Iba a hacer exactamente eso esta noche (hora del este de EE. UU.). Publicaré mi resultado tan pronto como los tenga.

Hice la siguiente prueba:
La aplicación:
importar ' paquete: flutter / foundation.dart ';
importar ' paquete: geolocator / geolocator.dart ';
vacío principal(){
DateTime start = DateTime.now ();
getCurrentPosition (). luego ((pos) {
DateTime end = DateTime.now ();
debugPrint ("intervalo de tiempo = $ {end.difference (inicio) .inMilliseconds} ms");
});
}
FuturogetCurrentPosition () async {
return await Geolocator (). getCurrentPosition ();
}

en pubspec.yaml tengo
geolocator: ^ 4.0.3 # No actualice - es muy lento para responder al inicio.
para la primera prueba, y
geolocalizador: ^ 5.1.4
para la segunda prueba.
Probé con un iPhone 6S, pero antes también usaba dispositivos más nuevos, así que no creo que el dispositivo marque la diferencia.
La primera prueba, con la versión 4.0.3 mostró un tiempo de respuesta de aproximadamente 100 ms
La segunda prueba, con la versión 5.1.4. mostró un tiempo de respuesta de aproximadamente 10 s, es decir, segundos, no ms
Ahí tienes.

Estoy tratando de probarlo en mi Motorola Z2 Play y un iPhone, pero aparece el siguiente error y no sé qué hacer.

Lanzando lib / main.dart en Android SDK construido para x86 en modo de depuración ...
Inicializando gradle ...
Resolviendo dependencias ...
Ejecutando la tarea de Gradle 'ensamblarDebug' ...

FALLO: la compilación falló con una excepción.

  • Qué salió mal:
    Error en la ejecución de la tarea ': app: preDebugBuild'.
    > Dependencia de Android 'androidx. core: core 'tiene una versión diferente para la ruta de clases de compilación (1.0.0) y tiempo de ejecución (1.0.2). Debe configurar manualmente la misma versión a través de DependencyResolution

Sé que no hay relaciones con el geolocalizador, pero no sé cómo solucionarlo.

'androidx. core: core 'tiene una versión diferente para la ruta de clase de compilación (1.0.0) y tiempo de ejecución (1.0.2)

Mira esto:
https://github.com/flutter/flutter/issues/27254

Aquí está mi prueba para Android.
Puse un botón de acción flotante y lo presioné 10 veces

PRIMERA PRUEBA geolocalizador: ^ 4.0.3
Iniciando lib / main.dart en Moto Z2 Play en modo de depuración ...
Inicializando gradle ...
Resolviendo dependencias ...
Ejecutando la tarea de Gradle 'ensamblarDebug' ...
Construido build / app / outputs / apk / debug / app-debug.apk.
Sincronizando archivos con el dispositivo Moto Z2 Play ...
I / flutter (11197): intervalo de tiempo = 1006 ms
I / flutter (11197): intervalo de tiempo = 1626 ms
I / flutter (11197): intervalo de tiempo = 965 ms
I / flutter (11197): intervalo de tiempo = 6024 ms
I / flutter (11197): intervalo de tiempo = 991 ms
I / flutter (11197): intervalo de tiempo = 971 ms
I / flutter (11197): intervalo de tiempo = 6022 ms
I / zygote (11197): recopilación de caché de código parcial, código = 62 KB, datos = 51 KB
I / zygote (11197): después de la recopilación de caché de código, código = 62 KB, datos = 51 KB
I / zygote (11197): aumento de la capacidad de caché de código a 256 KB
I / flutter (11197): intervalo de tiempo = 7866 ms
I / flutter (11197): intervalo de tiempo = 940 ms
I / flutter (11197): intervalo de tiempo = 6091 ms

SEGUNDA PRUEBA geolocalizador: ^ 5.1.4
Iniciando lib / main.dart en Moto Z2 Play en modo de depuración ...
Inicializando gradle ...
Resolviendo dependencias ...
Ejecutando la tarea de Gradle 'ensamblarDebug' ...
Construido build / app / outputs / apk / debug / app-debug.apk.
Sincronizando archivos con el dispositivo Moto Z2 Play ...
I / flutter (11471): intervalo de tiempo = 1043 ms
I / flutter (11471): intervalo de tiempo = 5927 ms
I / flutter (11471): intervalo de tiempo = 8876 ms
I / flutter (11471): intervalo de tiempo = 1052 ms
I / flutter (11471): intervalo de tiempo = 5987 ms
I / flutter (11471): intervalo de tiempo = 6316 ms
I / flutter (11471): intervalo de tiempo = 5948 ms
I / zygote (11471): recopilación de caché de código parcial, código = 62 KB, datos = 50 KB
I / zygote (11471): después de la recopilación de caché de código, código = 62 KB, datos = 50 KB
I / zygote (11471): aumento de la capacidad de caché de código a 256 KB
I / flutter (11471): intervalo de tiempo = 934 ms
I / flutter (11471): intervalo de tiempo = 6012 ms
I / flutter (11471): intervalo de tiempo = 954 ms

TERCERA PRUEBA geolocalizador: ^ 5.1.4
(SIN esperar en el geolocalizador presionando el botón 10 veces rápido
Iniciando lib / main.dart en Moto Z2 Play en modo de depuración ...
Inicializando gradle ...
Resolviendo dependencias ...
Ejecutando la tarea de Gradle 'ensamblarDebug' ...
Construido build / app / outputs / apk / debug / app-debug.apk.
Instalando build / app / outputs / apk / app.apk ...
Sincronizando archivos con el dispositivo Moto Z2 Play ...
I / flutter (16122): intervalo de tiempo = 1020 ms
I / flutter (16122): intervalo de tiempo = 159 ms
I / flutter (16122): intervalo de tiempo = 584 ms
I / flutter (16122): intervalo de tiempo = 544 ms
I / flutter (16122): intervalo de tiempo = 99 ms
I / flutter (16122): intervalo de tiempo = 536 ms
I / flutter (16122): intervalo de tiempo = 82 ms
I / zygote (16122): recopilación de caché de código parcial, código = 62 KB, datos = 50 KB
I / zygote (16122): después de la recopilación de caché de código, código = 62 KB, datos = 50 KB
I / zygote (16122): aumento de la capacidad de caché de código a 256 KB
I / flutter (16122): intervalo de tiempo = 504 ms
I / flutter (16122): intervalo de tiempo = 1381 ms
I / flutter (16122): intervalo de tiempo = 946 ms

Si bien no verifiqué el problema en Android yo mismo, como dice el título, este problema se abrió para iOS. No obstante, sus pruebas muestran resultados bastante inconsistentes, y no estoy seguro de qué hace la tercera prueba sin esperar a la llamada del geolocalizador. Quizás publicar el código de su aplicación aclararía eso.
En cualquier caso, me quedo con la versión 4.0.3 de la biblioteca por ahora. De hecho, recientemente lancé mi aplicación en la tienda de Apple. Es posible que desee comprobarlo en
http://apps.apple.com/us/app/apple-store/id1469322424

Aquí está mi prueba para IOS 12.4.4 iPhone 6

PRIMERA PRUEBA geolocalizador: ^ 4.0.3
Iniciando lib / main.dart en iPhone PCB en modo de depuración ...
Firma de la aplicación iOS para la implementación de dispositivos con la identidad del desarrollador: "Desarrollador de iPhone: Paulo Breim (Y34R2HBJ59)"
Ejecutando la instalación de pod ...
Ejecutando Xcode build ...
Compilación de Xcode terminada. 23,7 s
Instalación y ejecución ...
Sincronizando archivos con la PCB del iPhone del dispositivo ...
aleteo: intervalo de tiempo = 230 ms
aleteo: intervalo de tiempo = 92 ms
aleteo: intervalo de tiempo = 74 ms
aleteo: intervalo de tiempo = 80 ms
aleteo: intervalo de tiempo = 95 ms
aleteo: intervalo de tiempo = 87 ms
aleteo: intervalo de tiempo = 199 ms
aleteo: intervalo de tiempo = 58 ms
aleteo: intervalo de tiempo = 73 ms
aleteo: intervalo de tiempo = 70 ms

SEGUNDA PRUEBA geolocalizador: ^ 5.1.4
Lanzando lib / main.dart en iPhone PCB en modo de depuración ...
Firma de la aplicación iOS para la implementación de dispositivos con la identidad del desarrollador: "Desarrollador de iPhone: Paulo Breim (Y34R2HBJ59)"
Ejecutando la instalación de pod ...
Ejecutando Xcode build ...
Compilación de Xcode terminada. 22,6 s
Instalación y ejecución ...
Sincronizando archivos con la PCB del iPhone del dispositivo ...
aleteo: intervalo de tiempo = 12383 ms
aleteo: intervalo de tiempo = 10033 ms
aleteo: intervalo de tiempo = 10027 ms
aleteo: intervalo de tiempo = 10026 ms
aleteo: intervalo de tiempo = 10031 ms
aleteo: intervalo de tiempo = 10029 ms
aleteo: intervalo de tiempo = 10032 ms
aleteo: intervalo de tiempo = 10032 ms
aleteo: intervalo de tiempo = 10028 ms
aleteo: intervalo de tiempo = 10029 ms

babaosoftware, avíseme si necesita más pruebas

@paulobreim gracias por tu esfuerzo. Aparentemente confirma lo que hemos estado diciendo todo el tiempo, y los resultados son consistentes. Las versiones de la biblioteca de geolocalizador, que comienzan con 5.0.0, tienen un tiempo de respuesta inaceptable de aproximadamente 10 segundos para las llamadas a getCurrentPosition en la plataforma iOS.
Los resultados en Android son inconsistentes, pero algunos muestran tiempos de respuesta de más de 8 segundos, lo que también es preocupante.
@StijnWoerkom Creo que hay suficiente evidencia de que algo anda muy mal con la actualización de la biblioteca y requiere un poco de esfuerzo para aislar y arreglar.

@babaosoftware Gracias por su esfuerzo. Probé el mismo problema y llegué a la misma conclusión que tú. Trabajaremos en este problema y lo mantendremos informado cuando haya una solución para este problema.

Lo mismo sucede aquí en iOS 13.1.3 iPhone XR con la última versión de GeoLocator. Se necesitan entre 8 y 10 segundos para obtener la posición actual

Para aquellos de ustedes que tienen problemas con getPosition lentos en iOS (por ejemplo, se necesitan más de 10 s para obtener información de posición), pueden usar este paquete alternativo como se ha dicho antes en el hilo anterior.

https://github.com/Lyokone/flutterlocation

Carga información de posición extremadamente rápido tanto en Android como en iOS. (<1 s).

Estoy experimentando el mismo retraso con la última versión. ¿Hay algún problema / inconveniente con seguir con la versión 4.0.3?

Estoy de acuerdo con @cielo , probé este paquete y el paquete de ubicación [ enlace ] y la diferencia de velocidad es evidente. Sin embargo, este paquete ofrece más funciones y espero que este error en la demora se solucione (para mí es inconsistente).

Solo quiero agregar que todavía estoy experimentando esta lentitud también. Funciona bien en el emulador, pero tarda más de 10 segundos en el dispositivo físico Iphone 8 Plus.

efectivamente, la versión 4.0.3 funciona muy bien. Mi experiencia en dispositivos ios físicos, con la versión 5.2.0, se retrasó mucho en localizar la ubicación del dispositivo, al bajarla a 4.0.3 el problema de solucionar

Hola, tengo este problema en Android

mi código es tan simple como. Position position = await _geoLocator.getCurrentPosition();

Estoy usando un Google Pixel 3A

Yo también :(
estoy usando ^ 5.1.5
getCurrentPosition () tan lento tanto Android, IOS

Yo también
iam usando ^ 5.3.0
IOS 12.4 Iphone 5s.

Tengo el mismo problema, en iOS 13.4 beta iPhone XR
Funciona bien en cualquier dispositivo con sistema operativo Android.

El mismo problema aún, funciona bien en el dispositivo virtual pero con un retraso de 10 segundos en el dispositivo físico

Experimentando el mismo problema en mi iPhone 7, iOS 13.4

Mismo problema en iPhone 7 y iPhone X, IOS 13

Hola, mismo problema en un dispositivo iPhone X real, iOS 13

Nuestro tiempo de inicio fue de más de 10 segundos debido a este problema, volver a 4.0.3 funciona

Lo mismo aquí, iPhone 5s iOS 12.4.

También en iPhone 6s iOS 13.4

También estoy experimentando este problema. iPhone 6s iOS 13.4

El mismo problema en un dispositivo físico, iPhone 8 iOS 13.4. getLastKnownLocation funciona bien.

+1

Lo mismo aquí usando la versión de ^5.3.1 Geolocator en iPhone Xs e iOS 13.3. ¡Lo rebajé a 4.0.3 y es muy rápido! 🚀

Con los mismos resultados lentos, en el simulador de IOS funciona a las mil maravillas, luego probé en un teléfono real y tardé unos 10 segundos en cada dirección diferente, caminé por algunas casas y la primera vez siempre es lenta, si lo vuelves a intentar, se carga rápido.

También probé 4.0.3 y funciona bien, pero veo muchas correcciones de 4.0.3 a ^ 5.3.1. ¿Algún plan para arreglar esto en la rama principal?

Noté que 4.0.3 no es tan preciso como 5.3.1

También tuve este mismo problema. La degradación a 4.0.3 resolvió el problema por mí. Funcionó bien en el simulador de iOS, pero estaba envejeciendo en mi dispositivo físico de iOS (iPhone SE 2nd Gen).

¿Cómo no ha ganado más tracción este tema? Seguramente este es un problema de ruptura de complementos de nivel de producción. Simplemente no se puede usar en un entorno en vivo después de la v4.0.3.

Reproche aquí también, iPhone 8.
La primera adquisición es de más de 20 segundos en hardware real en 5.3.1.
Mismo hardware, misma ubicación, la primera adquisición es de ~ 2 segundos en 4.0.3.

Con los mismos resultados lentos, en el simulador de IOS funciona a las mil maravillas, luego probé en un teléfono real y tardé unos 10 segundos en cada dirección diferente, caminé por algunas casas y la primera vez siempre es lenta, si lo vuelves a intentar, se carga rápido.

Chico, he usado la versión 4.0.3 para obtener el mejor resultado en el simulador y el dispositivo iOS (iPhone 6s - 8)

Tengo el mismo problema y pasar a 4.0.3 no fue simple porque tendría que retroceder las versiones y ya me actualicé a Androidx. En su lugar, usé el complemento de ubicación de aleteo, mucho más rápido.

De manera similar a lo que dicen otras personas, veo retrasos de ~ 10 segundos (casi en el punto) en un dispositivo iOS físico, pero ninguno en el simulador. Esta desaceleración se observó en varios dispositivos de mi equipo.

¿Hay alguna intención de implementar una solución para las versiones más nuevas?

¿Podrías intentar cambiar la precisión? este funcionó para mí:
await Geolocator (). getCurrentPosition (deseadaAccuracy: LocationAccuracy.medium)

await Geolocator (). getCurrentPosition (deseadaAccuracy: LocationAccuracy.medium)
trabajó para mi.

Estaba en 5.3.2 + 2 y noté que este complemento era mucho más lento que el de ubicación. Basado en la recomendación aquí, bajé a 4.0.3 y la velocidad mejoró mucho.

También tuve el mismo problema que el anterior, cuando se ejecuta en Simulator v11.5 en Mac, la solución a continuación también funciona para la última GeoLocation, v ^ 5.3.2 + 2 en el momento de escribir esto.

La ubicación del dispositivo IOS del Simulador no está configurada de forma predeterminada, lo que causa la excepción, esto se puede configurar haciendo clic en en la barra de menú superior.

Funciones -> Ubicación -> Seleccione una opción

también tuvo que degradar a 4.03 debido al rendimiento en dispositivos iOS reales.

Lo mismo aquí, extremadamente lento.

Tuve el mismo problema con la versión 5.3.1.
Tomó alrededor de 10 segundos obtener la ubicación en casi cualquier versión de iPhone, iPad.
Cambiar la precisión de ubicación (de mejor a media) parece resolver el problema.

Lo mismo aquí, probado en varios iPhones desde 6S en adelante, versión 5.3.2: toma de 5 a 10 segundos obtener la ubicación

Lo mismo aquí, el iPhone 8 tarda 5 segundos en determinar la ubicación

Quizás mi solución estaba oculta en el texto:
Cuando cambié LocationAccuracy (de mejor a media), acorté la demora por menos de un segundo y, a veces, la respuesta fue instantánea (al menos en todas las máquinas que lo probé).
Tenga en cuenta que LocationAccuracy de "bueno" no era lo suficientemente bueno.

Mi iPhoneSE está tardando hasta 100 segundos (segundos) en obtener la posición actual. Algunas veces toma menos de un segundo y la próxima vez toma hasta 100. También intenté usar el paquete Location pero el mismo problema persistió. No puedo degradar a 4.0.4 ya que otro paquete que estoy usando depende de las versiones superiores. :(

Estamos trabajando arduamente en una nueva versión que debería resolver estos problemas. Consulte también el número 430 con más detalles sobre su progreso.

Recientemente tuve este problema al usar geolocator: ^ 5.3.1
para arreglar actualicé a geolocator: ^ 5.3.2 + 2
colocar :
compileSdkVersion 28

y finalmente lo hizo
actualización de aleteo

que parece haber solucionado el problema.

await Geolocator (). getCurrentPosition (deseadaAccuracy: LocationAccuracy.medium)
trabajó para mi.

La clase Geolocator () ahora está obsoleta en la última versión de ^ 6.0.0, ¿cómo se supone que debo usar PlaceMarker y placeFromCoordinate?

@mannnish, la funcionalidad de geocodificación se ha movido a su propia (dedicado) plugin llamado geocodificación .

@mannnish, la funcionalidad de geocodificación se ha movido a su propia (dedicado) plugin llamado geocodificación .

Gracias trabajado

Actualicé a la versión más reciente, solucioné el problema por mí 👍👍👍

Actualicé a la versión más reciente, solucioné el problema por mí 👍👍👍

De hecho, la actualización a ^6.1.14 también me ayudó.

Actualicé a la versión más reciente, solucioné el problema por mí 👍👍👍

De hecho, la actualización a ^6.1.14 también me ayudó.

no funciona para mí ................. dime los pasos que debo seguir

Actualicé a la versión más reciente, solucioné el problema por mí 👍👍👍

De hecho, la actualización a ^6.1.14 también me ayudó.

no funciona para mí ................. dime los pasos que debo seguir

hm, acabo de actualizar mi pubspec.yaml, ¿quizás también necesites eliminar pubpec.lock?

Ahora es lento de nuevo jajaja (al menos en la web)

¿Fue útil esta página
0 / 5 - 0 calificaciones