Flutter-geolocator: Excepción en IOS

Creado en 14 feb. 2019  ·  21Comentarios  ·  Fuente: Baseflow/flutter-geolocator

🐛 Informe de error

Estoy usando la función de transmisión para actualizaciones de ubicación en tiempo real y encontré un problema. Cuando mi posición se fija en el simulador, la actualización funciona normalmente, pero cuando configuro la ubicación en movimiento (simulador-> depuración-> ubicación-> ejecución de la ciudad), se lanza una excepción:

[VERBOSE-2:shell.cc(184)] Dart Error: Unhandled exception:
PlatformException(ERROR_UPDATING_LOCATION, The operation couldn’t be completed. (kCLErrorDomain error 0.), null)
#0      _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1112:29)
#1      _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#2      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

Comportamiento esperado

La ubicación se actualiza sin lanzar una excepción.

Pasos de reproducción

var locationOptions =
      LocationOptions(accuracy: LocationAccuracy.high, distanceFilter: 10);

geolocator.getPositionStream(locationOptions).listen((Position position) {
      print("New pos update: $position");
      if (position != null)
        setState(() {
          _position = position;
        });
    });

Configuración

Versión: 2.1.1

Plataforma:

  • [x]: iphone: iOS
  • []: robot: Android
ios bug up for graps

Comentario más útil

Enfrenté el mismo problema, mi solución es:
Depurar -> Ubicación ->

Screen Shot 2019-10-17 at 4 28 02 PM

Cuando marqué aquí, no se seleccionaron 'Ninguno' ni 'Ubicación personalizada', seleccioné una opción como ves y funcionó.

Todos 21 comentarios

Tengo un problema similar: uso de la transmisión para actualizaciones de ubicación en tiempo real y encontré un problema. Cuando mi posición se fija en el simulador, la actualización funciona con normalidad. Actualice la posición de depuración / ubicación un par de veces y se produce este error

[VERBOSE-2: ui_dart_state.cc (148)] Excepción no controlada: PlatformException (ERROR_UPDATING_LOCATION, la operación no se pudo completar. (KCLErrorDomain error 0.), null)

Config
Usando geolocalizador: "3.0.0"

Simulador de iOS (12.1) y dispositivo (12.1.4)

Estoy investigando esto más a fondo, lo actualizaré pronto.

Funciona correctamente en el simulador de iOS 10.1, 11.1
usando - simulador-> depuración-> ubicación-> unidad de autopista

Falla en 12.1
usando - simulador-> depuración-> ubicación-> unidad de autopista
PlatformException (ERROR_UPDATING_LOCATION, la operación no se pudo completar.

ejemplo de geolocalizador falla en 12.1

screenshot 2019-02-19 at 14 28 04

Estoy teniendo el mismo problema

Cierto. Sucede incluso con el ejemplo proporcionado.

Hola, estoy viendo el mismo problema, pero para mí probé primero "paseo en bicicleta por la ciudad", ¡y funcionó! Pero luego falló al cambiar a "city run" con este error.

Por lo tanto, City Bicycle Ride podría ser un perfil que puede usar mientras tanto.

Edición 1: ¡Y ahora el modo bicicleta también dejó de funcionar!
Edición 2: desinstalar la aplicación y volver a permitir el acceso a la ubicación solucionó este problema.

Yo también estoy viendo esto. Hice esto como una solución:

  StreamSubscription<Position> _positionStream;

  void _streamLocation() {
    // TODO: initialize _positionStream
    _positionStream.onError((e) {
      print("error streaming position: $e");
      _disposePositionStream();
      _streamLocation();
    });
  }

  void _disposePositionStream() {
    if (_positionStream != null) {
      _positionStream.cancel();
      _positionStream = null;
    }
  }

Reiniciar la transmisión parece hacer que funcione ahora.

NOTA : Esta no es la forma óptima de manejar esto anulando el _positionStream mientras aún lo está usando onError .

Sigo recibiendo este error con la aplicación de ejemplo
Single parece funcionar, aunque ocasionalmente informa nulo, la transmisión falla después de algunas actualizaciones.

PlatformException (ERROR_UPDATING_LOCATION, la operación no se pudo completar. (KCLErrorDomain error 0.), nulo)

Config (ahora)
Usando geolocalizador: "5.1.1 + 1"

Simulador de iOS (12.4) y dispositivo (10.xx)

A modo de prueba de Hack ..

LocationTask.m

  • (void) locationManager: (CLLocationManager *) administrador didFailWithError: (NSError *) error {
    NSLog (@ "% s", sel_getName (_cmd));
    // [contexto propio] resultHandler ;
    [self stopTask];
    [Self startTask]; // Perdóname...
    }

Esto funciona de manera confiable en Simulator 12.4 y 10.3
Recuerde la depuración del simulador, la ubicación a veces tiene que patearse varias veces antes de que cambie.

¿Pensamientos?

Tener el mismo problema después de actualizar la biblioteca a la última versión. Después de algunas pruebas, encontramos que las excepciones se activan cuando WiFi está encendido, si habilita 3g, funciona correctamente. ¿Alguna solución para esto?

Tener un problema similar. Estoy intentando completar un curso de londonappbrewery. ¡Recibo las siguientes excepciones! No sé cómo solucionarlo: /

Código:
Screenshot 2019-10-03 at 9 55 17 PM

Cuando presiono el botón, se muestra:

Iniciando lib / main.dart en iPhone Xʀ en modo de depuración ...
Ejecutando Xcode build ...
Compilación de Xcode terminada. 24,1 s
Sincronizando archivos con el dispositivo iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Excepción no controlada: PlatformException (ERROR_UPDATING_LOCATION, la operación no se pudo completar. (KCLErrorDomain error 0.), null)

0 StandardMethodCodec.decodeEnvelope (paquete: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (paquete: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (paquete: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (paquete: clima / pantallas / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build.(paquete: clima / pantallas / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (paquete: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build.(paquete: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (paquete: flutter / src / gestures / Recognizer.dart: 182: 24)

8 <…>

También intenté ejecutarlo en el simulador de Android (Pixel 3a API 28). Funcionó, pero desafortunadamente, proporciona coordenadas incorrectas. La diferencia de coordenadas es enorme. Estoy tratando de obtener una ubicación de Pakistán y mostrar su ubicación en algún lugar de los EE. UU.

Eche un vistazo a esto y vea si tiene problemas en común. ¿Podrías también proporcionarme información sobre el curso para saber lo que estoy viendo?

Enfrenté el mismo problema, mi solución es:
Depurar -> Ubicación ->

Screen Shot 2019-10-17 at 4 28 02 PM

Cuando marqué aquí, no se seleccionaron 'Ninguno' ni 'Ubicación personalizada', seleccioné una opción como ves y funcionó.

También viendo esto para dispositivos iOS en producción en Sentry. No estoy usando actualizaciones de ubicación en tiempo real, solo llamadas a getCurrentPosition / getLastKnownPosition

PlatformException: PlatformException(ERROR_UPDATING_LOCATION, The operation couldn’t be completed. (kCLErrorDomain error 0.), null)
  File "message_codecs.dart", line 569, in StandardMethodCodec.decodeEnvelope
  File "framework.dart", line 3919, in ComponentElement.mount
  File "framework.dart", line 3101, in Element.inflateWidget
  File "framework.dart", line 2904, in Element.updateChild
  File "framework.dart", line 5127, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3101, in Element.inflateWidget
  File "framework.dart", line 2904, in Element.updateChild
  File "framework.dart", line 3961, in ComponentElement.performRebuild
  File "framework.dart", line 3738, in Element.rebuild
  File "framework.dart", line 3924, in ComponentElement._firstBuild
  File "framework.dart", line 4088, in StatefulElement._firstBuild
  File "framework.dart", line 3919, in ComponentElement.mount
.
.
.

Ideas?

El siguiente código crea el mismo error para mí:

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

class LoadingScreen extends StatefulWidget {
  <strong i="6">@override</strong>
  _LoadingScreenState createState() => _LoadingScreenState();
}

class _LoadingScreenState extends State<LoadingScreen> {

  void getLocation() async {
    Position position = await Geolocator()
      .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    print(position);
  }

  <strong i="7">@override</strong>
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          onPressed: () {
            getLocation();
          },
          child: Text('Get Location'),
        ),
      ),
    );
  }
}

Versiones

Android Studio 3.5.3
Compilación # AI-191.8026.42.35.6010548, construida el 15 de noviembre de 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: VM de servidor OpenJDK de 64 bits de JetBrains sro
macOS 10.15.2

geolocalizador-5.1.5
location_permissions-2.0.3
versión de aleteo: v1.13.5

Ejecutando en similar: Iphone 11 Pro Max 13.3

Como lo sugirió @softronaut , la configuración de la ubicación en la aplicación del simulador eliminará el error. Entonces, tal vez un mensaje de error mejorado ayudaría. En mi caso, el error se debió a que no se estableció ninguna ubicación.

Tener un problema similar. Estoy intentando completar un curso de londonappbrewery. ¡Recibo las siguientes excepciones! No sé cómo solucionarlo: /

Código:
Screenshot 2019-10-03 at 9 55 17 PM

Cuando presiono el botón, se muestra:

Iniciando lib / main.dart en iPhone Xʀ en modo de depuración ...
Ejecutando Xcode build ...
Compilación de Xcode terminada. 24,1 s
Sincronizando archivos con el dispositivo iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Excepción no controlada: PlatformException (ERROR_UPDATING_LOCATION, la operación no se pudo completar. (KCLErrorDomain error 0.), null)

0 StandardMethodCodec.decodeEnvelope (paquete: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (paquete: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (paquete: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (paquete: clima / pantallas / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build. (paquete: clima / pantallas / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (paquete: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build. (paquete: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (paquete: flutter / src / gestures / Recognizer.dart: 182: 24)

8 <…>

También intenté ejecutarlo en el simulador de Android (Pixel 3a API 28). Funcionó, pero desafortunadamente, proporciona coordenadas incorrectas. La diferencia de coordenadas es enorme. Estoy tratando de obtener una ubicación de Pakistán y mostrar su ubicación en algún lugar de los EE. UU.

lo arregló siguiendo el Simulador de iOS -> Características -> Ubicación -> Ubicación personalizada ...

Debe configurar su ubicación personalizada en el simulador en funciones> ubicación> ubicación personalizada

locati onManager: didUpdateLocations :
[CurrentLocationTask dealloc]
[LocationTask dealloc]

Seguí iOS Simulator -> Funciones -> Ubicación -> Ubicación personalizada y ahora recibo el mensaje anterior. ¿Qué es ésto?

Enfrenté el mismo problema, mi solución es:
Depurar -> Ubicación ->

Screen Shot 2019-10-17 at 4 28 02 PM

Cuando marqué aquí, no se seleccionaron 'Ninguno' ni 'Ubicación personalizada', seleccioné una opción como ves y funcionó.

He tenido que configurar esta opción un par de veces. Por alguna razón, de vez en cuando, la configuración se restablece. ¿Alguien sabe por qué es esto?

Actualizado, esto ahora está en Características -> Ubicación -> Seleccione una opción

Resuelto en la versión 6.0.0

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