Flutter-geolocator: Ausnahme unter IOS

Erstellt am 14. Feb. 2019  ·  21Kommentare  ·  Quelle: Baseflow/flutter-geolocator

🐛 Fehlerbericht

Ich verwende die Stream-Funktion für Standortaktualisierungen in Echtzeit und bin auf ein Problem gestoßen. Wenn meine Position im Simulator festgelegt ist, funktioniert das Update normal, aber wenn ich den Standort auf Verschieben setze (Simulator-> Debug-> Standort-> Stadtlauf), wird eine Ausnahme ausgelöst:

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

Erwartetes Verhalten

Der Standort wird aktualisiert, ohne eine Ausnahme auszulösen

Reproduktionsschritte

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

Aufbau

Version: 2.1.1

Plattform:

  • [x]: iPhone: iOS
  • []: Roboter: Android
ios bug up for graps

Hilfreichster Kommentar

Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->

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

Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.

Alle 21 Kommentare

Ich habe ein ähnliches Problem: Beim Verwenden des Streams für Standortaktualisierungen in Echtzeit ist ein Problem aufgetreten. Wenn meine Position im Simulator festgelegt ist, funktioniert das Update normal. Aktualisieren Sie die Position von Debug / Location einige Male, und dieser Fehler tritt auf

[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)

Konfig
Geolocator verwenden: "3.0.0"

iOS Simulator (12.1) und Gerät (12.1.4)

Ich untersuche dies weiter, werde bald aktualisieren.

Funktioniert ordnungsgemäß mit iOS Simulator 10.1, 11.1
using - simulator-> debug-> location-> auteway drive

Schlägt am 12.1 fehl
using - simulator-> debug-> location-> auteway drive
PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden.

Geolocator-Beispiel schlägt am 12.1 fehl

screenshot 2019-02-19 at 14 28 04

Ich habe das gleiche Problem

Wahr. Dies geschieht auch mit dem angegebenen Beispiel.

Hallo, ich sehe das gleiche Problem, aber für mich habe ich zuerst "City Bike Ride" ausprobiert, und das hat funktioniert! Aber dann schlug es fehl, als mit diesem Fehler auf "Stadtlauf" umgeschaltet wurde.

City Bicycle Ride könnte also ein Profil sein, das Sie in der Zwischenzeit verwenden können.

Edit 1: Und jetzt funktioniert auch der Fahrradmodus nicht mehr!
Bearbeiten 2: Das Deinstallieren der App und das erneute Zulassen des Standortzugriffs haben dieses Problem für mich behoben.

Ich sehe das auch. Ich habe das als Workaround gemacht:

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

Durch einen Neustart des Streams scheint er jetzt zu funktionieren.

HINWEIS : Dies ist nicht der optimale Weg, um dies zu handhaben, indem onError _positionStream Null gesetzt wird, während es noch von onError .

Immer noch wird dieser Fehler mit der Beispiel-App angezeigt
Single scheint zu funktionieren, obwohl gelegentlich null gemeldet wird, schlägt der Stream nach einigen Updates fehl.

PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)

Config (Now)
Geolocator verwenden: "5.1.1 + 1"

iOS Simulator (12.4) und Gerät (10.xx)

Durch einen Hack-Test ..

LocationTask.m

  • (void) locationManager: (CLLocationManager *) manager didFailWithError: (NSError *) error {
    NSLog (@ "% s", sel_getName (_cmd));
    // [Selbstkontext] resultHandler ;
    [self stopTask];
    [self startTask]; // Vergib mir...
    }}

Dies funktioniert zuverlässig auf den Simulatoren 12.4 und 10.3
Denken Sie daran, dass der Simulator Debug, Location manchmal einige Male gekickt werden muss, bevor er sich ändert.

Gedanken?

Das gleiche Problem nach dem Aktualisieren der Bibliothek auf die neueste Version. Nach einigen Tests haben wir festgestellt, dass Ausnahmen ausgelöst wurden, wenn WLAN aktiviert ist. Wenn 3g aktiviert ist, funktioniert dies ordnungsgemäß. Irgendwelche Lösungen dafür?

Ein ähnliches Problem haben. Ich versuche einen Kurs von London Appbrewery zu absolvieren. Ich bekomme die folgenden Ausnahmen! Ich weiß nicht, wie ich das beheben soll: /

Code:
Screenshot 2019-10-03 at 9 55 17 PM

Wenn ich den Knopf drücke, wird Folgendes angezeigt:

Starten von lib / main.dart auf dem iPhone Xʀ im Debug-Modus ...
Ausführen von Xcode Build ...
Xcode Build fertig. 24.1s
Synchronisieren von Dateien mit dem Gerät iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)

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

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

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

3 _LoadingScreenState.getLocation (Paket: clima / screen / load_screen.dart: 12: 10)

4 _LoadingScreenState.build.(Paket: clima / screen / load_screen.dart: 22: 13)

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

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

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

8 <…>

Ich habe auch versucht, es auf dem Android-Simulator (Pixel 3a API 28) auszuführen. Es hat funktioniert, aber leider liefert es falsche Koordinaten. Der Unterschied in den Koordinaten ist enorm. Ich versuche, einen Standort aus Pakistan zu bekommen, der irgendwo in den USA gezeigt wird.

Schauen Sie sich das an und sehen Sie, ob Sie gemeinsame Probleme haben. Könnten Sie mir auch einige Informationen über den Kurs geben, damit ich weiß, was ich sehe?

Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->

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

Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.

Dies wird auch für iOS-Geräte in der Produktion auf Sentry angezeigt. Ich verwende keine Standortaktualisierungen in Echtzeit, sondern rufe nur 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
.
.
.

Ideen?

Der folgende Code erzeugt den gleichen Fehler für mich:

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

Versionen

Android Studio 3.5.3
Build # AI-191.8026.42.35.6010548, erstellt am 15. November 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit-Server-VM von JetBrains sro
macOS 10.15.2

Geolocator-5.1.5
location_permissions-2.0.3
Flatterversion: v1.13.5

Laufen auf Similator: Iphone 11 Pro Max 13.3

Wie von @softronaut vorgeschlagen, wird der behoben . Vielleicht würde eine verbesserte Fehlermeldung helfen. In meinem Fall war der Fehler, weil kein Ort festgelegt wurde.

Ein ähnliches Problem haben. Ich versuche einen Kurs von London Appbrewery zu absolvieren. Ich bekomme die folgenden Ausnahmen! Ich weiß nicht, wie ich das beheben soll: /

Code:
Screenshot 2019-10-03 at 9 55 17 PM

Wenn ich den Knopf drücke, wird Folgendes angezeigt:

Starten von lib / main.dart auf dem iPhone Xʀ im Debug-Modus ...
Ausführen von Xcode Build ...
Xcode Build fertig. 24.1s
Synchronisieren von Dateien mit dem Gerät iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)

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

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

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

3 _LoadingScreenState.getLocation (Paket: clima / screen / load_screen.dart: 12: 10)

4 _LoadingScreenState.build. (Paket: clima / screen / load_screen.dart: 22: 13)

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

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

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

8 <…>

Ich habe auch versucht, es auf dem Android-Simulator (Pixel 3a API 28) auszuführen. Es hat funktioniert, aber leider liefert es falsche Koordinaten. Der Unterschied in den Koordinaten ist enorm. Ich versuche, einen Standort aus Pakistan zu bekommen, der irgendwo in den USA gezeigt wird.

Behebung durch Befolgen des iOS-Simulators -> Funktionen -> Standort -> Benutzerdefinierter Standort ...

Sie müssen Ihren benutzerdefinierten Speicherort im Simulator unter Funktionen> Speicherort> Benutzerdefinierter Speicherort festlegen

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

Ich bin iOS Simulator -> Funktionen -> Standort -> Benutzerdefinierter Standort gefolgt und erhalte jetzt die obige Meldung. Was ist das?

Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->

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

Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.

Ich musste diese Option jetzt ein paar Mal einstellen. Aus irgendeinem Grund wird die Einstellung von Zeit zu Zeit selbst zurückgesetzt. Weiß jemand warum das so ist?

Aktualisiert befindet sich dies jetzt unter Funktionen -> Standort -> Option auswählen

In Version 6.0.0 gelöst

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen