Flutter-geolocator: Exceção no IOS

Criado em 14 fev. 2019  ·  21Comentários  ·  Fonte: Baseflow/flutter-geolocator

🐛 Relatório de Bug

Estou usando o recurso de transmissão para atualizações de localização em tempo real e tive um problema. Quando minha posição é fixada no simulador, a atualização funciona normalmente, mas quando eu defino o local para mover (simulador-> depurar-> localização-> execução da cidade), uma exceção é lançada:

[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)

Comportamento esperado

O local é atualizado sem lançar uma exceção

Etapas de reprodução

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;
        });
    });

Configuração

Versão: 2.1.1

Plataforma:

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

Comentários muito úteis

Eu enfrentei o mesmo problema, minha solução é:
Depurar -> Localização ->

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

Quando eu marquei aqui, nem 'Nenhum' nem 'Local personalizado' foram selecionados, selecionei uma opção como você vê e funcionou.

Todos 21 comentários

Tenho um problema semelhante - ao usar o stream para atualizações de localização em tempo real, encontrei um problema. Quando minha posição é fixada no simulador, a atualização funciona normalmente. Atualize a posição de depuração / localização algumas vezes e este erro ocorre

[VERBOSE-2: ui_dart_state.cc (148)] Exceção não tratada: PlatformException (ERROR_UPDATING_LOCATION, a operação não pôde ser concluída. (KCLErrorDomain erro 0.), nulo)

Config
Usando o geolocalização: "3.0.0"

Simulador iOS (12.1) e dispositivo (12.1.4)

Estou investigando isso mais a fundo, atualizarei em breve.

Funciona corretamente no simulador iOS 10.1, 11.1
usando - simulador-> depuração-> localização-> via expressa

Falha em 12.1
usando - simulador-> depuração-> localização-> via expressa
PlatformException (ERROR_UPDATING_LOCATION, A operação não pôde ser concluída.

O exemplo de geolocalização falha em 12.1

screenshot 2019-02-19 at 14 28 04

Estou tendo o mesmo problema

Verdadeiro. Isso acontece mesmo com o exemplo fornecido.

Olá, estou tendo o mesmo problema, mas tentei primeiro "passeio de bicicleta na cidade" e funcionou! Mas então ele falhou ao mudar para "city run" com este erro.

Portanto, City Bicycle Ride pode ser um perfil que você pode usar enquanto isso.

Edição 1: E agora o modo bicicleta parou de funcionar também!
Edição 2: Desinstalar o aplicativo e permitir novamente o acesso ao local corrigiu esse problema para mim.

Eu também estou vendo isso. Eu fiz isso como uma solução alternativa:

  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 o stream parece fazê-lo funcionar agora.

NOTA : Esta não é a maneira ideal de lidar com isso anulando _positionStream enquanto ele ainda está sendo usado por onError .

Ainda estou recebendo este erro usando o aplicativo de exemplo
Único parece funcionar, embora ocasionalmente relate nulo, o fluxo falha após algumas atualizações.

PlatformException (ERROR_UPDATING_LOCATION, A operação não pôde ser concluída. (KCLErrorDomain erro 0.), nulo)

Config (agora)
Usando o geolocalização: "5.1.1 + 1"

Simulador iOS (12.4) e dispositivo (10.xx)

Por meio de um teste de hack ..

LocationTask.m

  • (void) locationManager: (CLLocationManager *) manager didFailWithError: (NSError *) error {
    NSLog (@ "% s", sel_getName (_cmd));
    // [contexto próprio] resultHandler ;
    [self stopTask];
    [self startTask]; // Me perdoe...
    }

Isso funciona de forma confiável no Simulador 12.4 e 10.3
Lembre-se do simulador Debug, Location às vezes precisa ser chutado algumas vezes antes de mudar.

Pensamentos?

Tendo o mesmo problema após atualizar a biblioteca para a versão mais recente. Depois de alguns testes, descobrimos que as exceções são acionadas quando o WiFi está ligado, se habilitar 3g ele funciona corretamente. Alguma solução para isso?

Tendo um problema semelhante. Estou tentando concluir um curso na londonappbrewery. Estou recebendo as seguintes exceções! Não sei como consertar: /

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

Ao pressionar o botão, ele mostra:

Iniciando lib / main.dart no iPhone Xʀ no modo de depuração ...
Executando Xcode build ...
Compilação do Xcode concluída. 24.1s
Sincronizando arquivos para o dispositivo iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Exceção não tratada: PlatformException (ERROR_UPDATING_LOCATION, a operação não pôde ser concluída. (KCLErrorDomain erro 0.), nulo)

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

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

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

3 _LoadingScreenState.getLocation (pacote: clima / telas / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build.(pacote: clima / telas / loading_screen.dart: 22: 13)

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

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

7 GestureRecognizer.invokeCallback (pacote: flutter / src / gestures / reconhecizer.dart: 182: 24)

8 <…>

Também tentei executá-lo no simulador de Android (Pixel 3a API 28). Funcionou, mas, infelizmente, está fornecendo coordenadas incorretas. A diferença de coordenadas é enorme. Tipo, estou tentando obter uma localização do Paquistão e sua localização em algum lugar dos EUA.

252 Dê uma olhada nisso e veja se você tem problemas em comum. Você também poderia me fornecer algumas informações sobre o curso para que eu saiba o que estou vendo?

Eu enfrentei o mesmo problema, minha solução é:
Depurar -> Localização ->

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

Quando eu marquei aqui, nem 'Nenhum' nem 'Local personalizado' foram selecionados, selecionei uma opção como você vê e funcionou.

Também vendo isso para dispositivos iOS em produção no Sentry. Não estou usando atualizações de localização em tempo real, apenas ligações para 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
.
.
.

Ideias?

O código a seguir cria o mesmo erro para mim:

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'),
        ),
      ),
    );
  }
}

Versões

Android Studio 3.5.3
Versão # AI-191.8026.42.35.6010548, construída em 15 de novembro de 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: Servidor VM OpenJDK de 64 bits da JetBrains sro
macOS 10.15.2

Geolocator-5.1.5
location_permissions-2.0.3
versão vibrante: v1.13.5

Executando no similator: Iphone 11 Pro Max 13.3

Como sugerido por @softronauta, definir a localização no aplicativo do simulador eliminará o erro. Portanto, talvez uma mensagem de erro aprimorada ajude. No meu caso, o erro foi porque nenhum local foi definido.

Tendo um problema semelhante. Estou tentando concluir um curso na londonappbrewery. Estou recebendo as seguintes exceções! Não sei como consertar: /

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

Ao pressionar o botão, ele mostra:

Iniciando lib / main.dart no iPhone Xʀ no modo de depuração ...
Executando Xcode build ...
Compilação do Xcode concluída. 24.1s
Sincronizando arquivos para o dispositivo iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Exceção não tratada: PlatformException (ERROR_UPDATING_LOCATION, a operação não pôde ser concluída. (KCLErrorDomain erro 0.), nulo)

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

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

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

3 _LoadingScreenState.getLocation (pacote: clima / telas / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build. (pacote: clima / telas / loading_screen.dart: 22: 13)

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

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

7 GestureRecognizer.invokeCallback (pacote: flutter / src / gestures / reconhecizer.dart: 182: 24)

8 <…>

Também tentei executá-lo no simulador de Android (Pixel 3a API 28). Funcionou, mas, infelizmente, está fornecendo coordenadas incorretas. A diferença de coordenadas é enorme. Tipo, estou tentando obter uma localização do Paquistão e sua localização em algum lugar dos EUA.

corrigiu-o seguindo o simulador iOS -> Recursos -> Localização -> Localização personalizada ...

Você deve definir sua localização personalizada no simulador em recursos> localização> localização personalizada

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

Segui o simulador iOS -> Recursos -> Localização -> Localização personalizada e agora estou recebendo a mensagem acima. O que é isso?

Eu enfrentei o mesmo problema, minha solução é:
Depurar -> Localização ->

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

Quando eu marquei aqui, nem 'Nenhum' nem 'Local personalizado' foram selecionados, selecionei uma opção como você vê e funcionou.

Eu tive que definir essa opção algumas vezes agora. Por alguma razão, de vez em quando, a configuração é redefinida. Alguém sabe o porquê disso?

Atualizado, agora está em Recursos -> Localização -> Selecione uma opção

Resolvido na versão 6.0.0

Esta página foi útil?
0 / 5 - 0 avaliações