Flutter-geolocator: IOSでの例外

作成日 2019年02月14日  ·  21コメント  ·  ソース: Baseflow/flutter-geolocator

🐛バグレポート

リアルタイムの位置更新にストリーム機能を使用していますが、問題が発生しました。 シミュレーターで位置が固定されている場合、更新は正常に機能しますが、場所を移動に設定すると(simulator-> debug-> location-> city run)、例外がスローされます。

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

予想される行動

例外をスローせずに場所が更新されます

複製手順

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

構成

バージョン: 2.1.1

プラットホーム:

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

最も参考になるコメント

私は同じ問題に直面しました、私の解決策は次のとおりです:
デバッグ->場所->

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

ここをチェックしたところ、「なし」も「カスタムロケーション」も選択されていませんでした。表示されているオプションを選択すると、機能しました。

全てのコメント21件

同様の問題があります-リアルタイムの位置更新にストリームを使用すると、問題が発生しました。 シミュレーターで自分の位置が固定されると、更新は正常に機能します。 デバッグ/ロケーションから位置を数回更新すると、このエラーが発生します

[VERBOSE-2:ui_dart_state.cc(148)]未処理の例外:PlatformException(ERROR_UPDATING_LOCATION、操作を完了できませんでした。(kCLErrorDomainエラー0。)、null)

構成
ジオロケーターの使用:「3.0.0」

iOSシミュレーター(12.1)およびデバイス(12.1.4)

私はこれをさらに調査しており、まもなく更新されます。

iOSシミュレーター10.1、11.1で正しく動作します
使用-シミュレータ->デバッグ->場所->高速道路ドライブ

12.1で失敗する
使用-シミュレータ->デバッグ->場所->高速道路ドライブ
PlatformException(ERROR_UPDATING_LOCATION、操作を完了できませんでした。

geolocatorの例は12.1で失敗します

screenshot 2019-02-19 at 14 28 04

私は同じ問題を抱えています

本当です。 提供された例でも発生します。

こんにちは、同じ問題が発生していますが、私にとっては最初に「シティバイクライド」を試してみましたが、うまくいきました。 しかし、このエラーで「cityrun」に切り替えると失敗しました。

したがって、City Bicycle Rideは、当面の間使用できるプロファイルである可能性があります。

編集1:そして今自転車モードも機能しなくなりました!
編集2:アプリをアンインストールし、位置情報へのアクセスを再度許可すると、この問題が修正されました。

私もこれを見ています。 私はこれを回避策として行いました:

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

ストリームを再起動すると、現在は機能しているようです。

:これは、 onErrorによってまだ使用されているときに、 _positionStreamを無効にしてこれを処理するための最適な方法ではありません。

サンプルアプリを使用してもこのエラーが発生する
Singleは機能しているようですが、nullが報告されることもありますが、数回の更新後にストリームが失敗します。

PlatformException(ERROR_UPDATING_LOCATION、操作を完了できませんでした。(kCLErrorDomainエラー0。)、null)

構成(現在)
ジオロケーターの使用:「5.1.1 + 1」

iOSシミュレーター(12.4)およびデバイス(10.xx)

ハックテストとして..

LocationTask.m

  • (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@ "%s"、sel_getName(_cmd));
    // [セルフコンテキスト] resultHandler ;
    [セルフストップタスク];
    [セルフスタートタスク]; // 私を許して...
    }

これは、シミュレータ12.4および10.3で確実に機能します。
シミュレータのデバッグを覚えておいてください。場所は、変更する前に数回キックする必要がある場合があります。

考え?

ライブラリを最新バージョンに更新した後も同じ問題が発生します。 いくつかのテストの結果、WiFiがオンのときに例外が発生することがわかりました。3gを有効にすると、正しく機能します。 これに対する解決策はありますか?

同様の問題を抱えています。 londonappbreweryのコースを修了しようとしています。 次の例外が発生します! それを修正する方法がわからない:/

コード:
Screenshot 2019-10-03 at 9 55 17 PM

ボタンを押すと、次のように表示されます。

iPhoneXでlib / main.dartをデバッグモードで起動しています...
Xcodeビルドを実行しています...
Xcodeのビルドが完了しました。 24.1秒
ファイルをデバイスiPhoneXに同期しています...
[VERBOSE-2:ui_dart_state.cc(148)]未処理の例外:PlatformException(ERROR_UPDATING_LOCATION、操作を完了できませんでした。(kCLErrorDomainエラー0。)、null)

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

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

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

3 _LoadingScreenState.getLocation(package:clima / screens / Loading_screen.dart:12:10)

4_LoadingScreenState.build。(package:clima / screens / loading_screen.dart:22:13)

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

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

7 GestureRecognizer.invokeCallback(package:flutter / src / gestures / recognizer.dart:182:24)

8 <…>

また、Androidシミュレーター(Pixel 3a API 28)で実行しようとしました。 それは機能しましたが、残念ながら、それは間違った座標を提供しています。 座標の違いは大きいです。 同様に、私はパキスタンから場所を取得しようとしています。

252これを見て、共通の問題があるかどうかを確認してください。 また、私が何を見ているのかがわかるように、コースに関する情報を教えていただけますか?

私は同じ問題に直面しました、私の解決策は次のとおりです:
デバッグ->場所->

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

ここをチェックしたところ、「なし」も「カスタムロケーション」も選択されていませんでした。表示されているオプションを選択すると、機能しました。

Sentryで本番環境にあるiOSデバイスでもこれが見られます。 リアルタイムの位置情報の更新は使用していません。 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
.
.
.

アイデア?

次のコードは私にとって同じエラーを作成します:

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

バージョン

Android Studio 3.5.3
ビルド#AI-191.8026.42.35.6010548、2019年11月15日にビルド
JRE:1.8.0_202-release-1483-b49-5587405 x86_64
JVM:JetBrainssroによるOpenJDK64ビットサーバーVM
macOS 10.15.2

geolocator-5.1.5
location_permissions-2.0.3
フラッターバージョン:v1.13.5

similatorで実行:Iphone 11 Pro Max 13.3

@softronautが提案する解消されます。 したがって、おそらく改善されたエラーメッセージが役立つでしょう。 私の場合、エラーは場所が設定されていないことが原因でした。

同様の問題を抱えています。 londonappbreweryのコースを修了しようとしています。 次の例外が発生します! それを修正する方法がわからない:/

コード:
Screenshot 2019-10-03 at 9 55 17 PM

ボタンを押すと、次のように表示されます。

iPhoneXでlib / main.dartをデバッグモードで起動しています...
Xcodeビルドを実行しています...
Xcodeのビルドが完了しました。 24.1秒
ファイルをデバイスiPhoneXに同期しています...
[VERBOSE-2:ui_dart_state.cc(148)]未処理の例外:PlatformException(ERROR_UPDATING_LOCATION、操作を完了できませんでした。(kCLErrorDomainエラー0。)、null)

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

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

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

3 _LoadingScreenState.getLocation(package:clima / screens / Loading_screen.dart:12:10)

4_LoadingScreenState.build。 (package:clima / screens / loading_screen.dart:22:13)

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

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

7 GestureRecognizer.invokeCallback(package:flutter / src / gestures / recognizer.dart:182:24)

8 <…>

また、Androidシミュレーター(Pixel 3a API 28)で実行しようとしました。 それは機能しましたが、残念ながら、それは間違った座標を提供しています。 座標の違いは大きいです。 同様に、私はパキスタンから場所を取得しようとしています。

iOSシミュレーター->機能->場所->カスタム場所...に従って修正しました。

シミュレータの[機能]> [場所]> [カスタムの場所]でカスタムの場所を設定する必要があります

locati onManager:didUpdateLocations
[CurrentLocationTaskdealloc]
[LocationTaskdealloc]

iOSシミュレーター->機能->場所->カスタム場所をたどったところ、上記のメッセージが表示されました。 これは何ですか?

私は同じ問題に直面しました、私の解決策は次のとおりです:
デバッグ->場所->

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

ここをチェックしたところ、「なし」も「カスタムロケーション」も選択されていませんでした。表示されているオプションを選択すると、機能しました。

このオプションを数回設定する必要がありました。 何らかの理由で、設定が自動的にリセットされることがあります。 なぜこれなのか誰にも分かりますか?

更新されました。これは[機能]-> [場所]-> [オプションの選択]にあります。

バージョン6.0.0で解決

このページは役に立ちましたか?
0 / 5 - 0 評価