Flutter-geolocator: Pengecualian di IOS

Dibuat pada 14 Feb 2019  ·  21Komentar  ·  Sumber: Baseflow/flutter-geolocator

🐛 Laporan Bug

Saya menggunakan fitur aliran untuk pembaruan lokasi waktu nyata dan saya mengalami masalah. Ketika posisi saya diperbaiki di simulator, pembaruan berfungsi normal tetapi ketika saya mengatur lokasi untuk bergerak (simulator-> debug-> lokasi-> city run), pengecualian dilemparkan:

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

Perilaku yang diharapkan

Lokasi diperbarui tanpa membuat pengecualian

Langkah reproduksi

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

Konfigurasi

Versi: 2.1.1.0

Peron:

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

Komentar yang paling membantu

Saya menghadapi masalah yang sama, solusi saya adalah:
Debug -> Lokasi ->

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

Ketika saya memeriksa di sini, baik 'Tidak Ada' atau 'Lokasi Khusus' dipilih, saya memilih opsi seperti yang Anda lihat dan itu berhasil.

Semua 21 komentar

Saya memiliki masalah serupa - Menggunakan aliran untuk pembaruan lokasi waktu nyata dan saya mengalami masalah. Ketika posisi saya diperbaiki di simulator, pembaruan berfungsi normal. Perbarui posisi dari debug / lokasi beberapa kali dan kesalahan ini terjadi

[VERBOSE-2: ui_dart_state.cc (148)] Unhandled Exception: PlatformException (ERROR_UPDATING_LOCATION, Operasi tidak dapat diselesaikan. (Kesalahan kCLErrorDomain 0.), null)

Config
Menggunakan geolocator: "3.0.0"

iOS Simulator (12.1) dan perangkat (12.1.4)

Saya sedang menyelidiki ini lebih lanjut, akan segera diperbarui.

Bekerja dengan benar pada simulator iOS 10.1, 11.1
menggunakan - simulator-> debug-> lokasi-> jalan bebas hambatan

Gagal di 12.1
menggunakan - simulator-> debug-> lokasi-> jalan bebas hambatan
PlatformException (ERROR_UPDATING_LOCATION, Operasi tidak dapat diselesaikan.

Contoh geolocator Gagal di 12.1

screenshot 2019-02-19 at 14 28 04

Saya mempunyai masalah yang sama

Benar. Itu terjadi bahkan dengan contoh yang diberikan.

Hai, Saya mengalami masalah yang sama, tetapi bagi saya, saya mencoba "bersepeda kota" terlebih dahulu, dan berhasil! Tapi kemudian gagal saat beralih ke "city run" dengan kesalahan ini.

Jadi City Bicycle Ride mungkin merupakan profil yang dapat Anda gunakan untuk sementara.

Sunting 1: Dan sekarang mode sepeda berhenti bekerja juga!
Edit 2: Mencopot pemasangan aplikasi, dan mengizinkan kembali akses lokasi memperbaiki masalah ini untuk saya.

Saya melihat ini juga. Saya melakukan ini sebagai pekerjaan sekitar:

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

Memulai ulang streaming tampaknya membuatnya berfungsi sekarang.

CATATAN : Ini bukan cara optimal untuk menangani ini dengan membatalkan _positionStream sementara itu masih digunakan oleh onError .

Masih mendapatkan kesalahan ini menggunakan aplikasi contoh
Single tampaknya berfungsi, meskipun terkadang melaporkan null, streaming gagal setelah beberapa update.

PlatformException (ERROR_UPDATING_LOCATION, Operasi tidak dapat diselesaikan. (Kesalahan kCLErrorDomain 0.), null)

Config (Sekarang)
Menggunakan geolocator: "5.1.1 + 1"

Simulator iOS (12.4) dan perangkat (10.xx)

Melalui tes Hack ..

LocationTask.m

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

Ini bekerja dengan andal di Simulator 12.4 dan 10.3
Ingat simulator Debug, Lokasi terkadang harus ditendang beberapa kali sebelum berubah.

Pikiran?

Mengalami masalah yang sama setelah memperbarui pustaka ke versi terbaru. Setelah beberapa tes kami menemukan bahwa pengecualian ditendang saat WiFi aktif, jika mengaktifkan 3g itu berfungsi dengan benar. Ada solusi untuk ini?

Mengalami masalah serupa. Saya mencoba menyelesaikan kursus dari londonappbrewery. Saya mendapatkan pengecualian berikut! Tidak tahu cara memperbaikinya: /

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

Saat saya menekan tombol itu menunjukkan:

Meluncurkan lib / main.dart di iPhone Xʀ dalam mode debug ...
Menjalankan Xcode build ...
Pembuatan Xcode selesai. 24.1 dtk
Menyinkronkan file ke perangkat iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Unhandled Exception: PlatformException (ERROR_UPDATING_LOCATION, Operasi tidak dapat diselesaikan. (Kesalahan kCLErrorDomain 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 / screens / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build.(paket: clima / screens / loading_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 / isyarat / pengenal.dart: 182: 24)

8 <…>

Saya juga mencoba menjalankannya di simulator android (Pixel 3a API 28). Ini berhasil tetapi sayangnya, itu memberikan koordinat yang salah. Perbedaan koordinat sangat besar. Seperti, saya mencoba untuk mendapatkan lokasi dari Pakistan dan lokasinya di suatu tempat di AS.

252 perhatikan ini dan lihat apakah Anda memiliki masalah yang sama. Bisakah Anda juga memberi saya beberapa informasi tentang kursus agar saya tahu apa yang saya cari?

Saya menghadapi masalah yang sama, solusi saya adalah:
Debug -> Lokasi ->

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

Ketika saya memeriksa di sini, baik 'Tidak Ada' atau 'Lokasi Khusus' dipilih, saya memilih opsi seperti yang Anda lihat dan itu berhasil.

Juga melihat ini untuk perangkat iOS yang diproduksi di Sentry. Saya tidak menggunakan pembaruan lokasi waktu nyata, hanya menelepon ke 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
.
.
.

Ide ide?

Kode berikut membuat kesalahan yang sama untuk saya:

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

Versi

Android Studio 3.5.3
Bentukan # AI-191.8026.42.35.6010548, dibuat pada 15 November 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit Server VM oleh JetBrains sro
macOS 10.15.2

geolocator-5.1.5
location_permissions-2.0.3
versi flutter: v1.13.5

Berjalan pada similator: Iphone 11 Pro Max 13.3

Seperti yang disarankan oleh @softronaut, pengaturan lokasi di aplikasi simulator akan menghilangkan kesalahan. Jadi mungkin pesan kesalahan yang ditingkatkan akan membantu. Dalam kasus saya, kesalahan itu karena tidak ada lokasi yang ditetapkan.

Mengalami masalah serupa. Saya mencoba menyelesaikan kursus dari londonappbrewery. Saya mendapatkan pengecualian berikut! Tidak tahu cara memperbaikinya: /

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

Saat saya menekan tombol itu menunjukkan:

Meluncurkan lib / main.dart di iPhone Xʀ dalam mode debug ...
Menjalankan Xcode build ...
Pembuatan Xcode selesai. 24.1 dtk
Menyinkronkan file ke perangkat iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Unhandled Exception: PlatformException (ERROR_UPDATING_LOCATION, Operasi tidak dapat diselesaikan. (Kesalahan kCLErrorDomain 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 / screens / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build. (paket: clima / screens / loading_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 / isyarat / pengenal.dart: 182: 24)

8 <…>

Saya juga mencoba menjalankannya di simulator android (Pixel 3a API 28). Ini berhasil tetapi sayangnya, itu memberikan koordinat yang salah. Perbedaan koordinat sangat besar. Seperti, saya mencoba untuk mendapatkan lokasi dari Pakistan dan lokasinya di suatu tempat di AS.

perbaiki dengan mengikuti iOS Simulator -> Features -> Location -> Custom Location ...

Anda harus mengatur lokasi khusus pada simulator di bawah fitur> lokasi> lokasi khusus

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

Saya mengikuti iOS Simulator -> Fitur -> Lokasi -> Lokasi Kustom dan sekarang saya mendapatkan pesan di atas. Apa ini?

Saya menghadapi masalah yang sama, solusi saya adalah:
Debug -> Lokasi ->

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

Ketika saya memeriksa di sini, baik 'Tidak Ada' atau 'Lokasi Khusus' dipilih, saya memilih opsi seperti yang Anda lihat dan itu berhasil.

Saya harus menyetel opsi ini beberapa kali sekarang. Untuk beberapa alasan sesekali pengaturan me-reset sendiri. ada yang tahu mengapa ini?

Diperbarui, ini sekarang ada di Fitur -> Lokasi -> Pilih opsi

Diselesaikan dalam versi 6.0.0

Apakah halaman ini membantu?
0 / 5 - 0 peringkat