位置を出力することを期待してください、これはコードです:
Geolocator geo = Geolocator();
位置位置=
geo.getCurrentPosition(desiredAccuracy:LocationAccuracy.high);を待ちます。
print(pos);
これはAndroidエミュレーターで動作します-位置はコンソールに出力されます。
iOSエミュレーターでは機能せず、何も印刷されず、print(pos)の後に別のprintステートメントを追加すると、それも印刷されません。 私はそれが位置を決して得なかったと思うので、それは永遠に「待っている」のですか?
AndroidStudioのiPhone11エミュレーター
バージョン: 1.x
プラットホーム:
:iphone:iOS
@LarryJingこの問題を再現することはできませんが、実際に場所の更新をシミュレートしましたか? iOSシミュレータでは、次のメニューオプションを使用して場所をアクティブに設定する必要があります。[機能]-> [場所]:
はい、iOSシミュレーターのこのプラグインでもエラーが発生しました。 このログをコンソールで取得しています。
はい、iOSシミュレーターのこのプラグインでもエラーが発生しました。 このログをコンソールで取得しています。
私も同じエラーが発生しました。
`` `フラッタードクター
[✓]フラッター(チャンネル安定版、v1.17.2、Mac OS X 10.15.4 19E287、ロケールen-JP)
[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン29.0.3)
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 11.5)
[✓] Android Studio(バージョン4.0)
[!] IntelliJ IDEA Ultimate Edition(バージョン2018.2.2)
✗Flutterプラグインがインストールされていません。 これにより、Flutter固有の機能が追加されます。
✗Dartプラグインがインストールされていません。 これにより、Dart固有の機能が追加されます。
[✓] VS Code(バージョン1.45.1)
[✓]接続されたデバイス(1つ利用可能)
`` `
バージョン: geolocator: 5.3.2
シミュレーター: iPhone 11 / Software Version 13.5
モジュールのバージョンが5.3.1
変更されても、エラーは発生しません。
場所の更新権限を追加することで、この問題は解決します
私もこれに遭遇しています。 バックグラウンドでの場所をリクエストしたくありません。フォアグラウンドのみをリクエストします。 つまり、バックグラウンドモードを有効にする必要がないことを意味します。
これは確かに、誤って実行されたエラーです。 今日/明日後で修正します。 それまでは、バックグラウンドで位置情報の更新を有効にするか、5.3.1を使用してください
この問題を修正する修正プログラム(バージョン5.3.2 + 1)をリリースしました。 Backgroupの位置情報の更新を有効にするオプションを使用して設定できるようになりましたEnableBackgroundLocationUpdates
あなたの重要Info.plist
(も参照README.mdをiOSのセクションで)。
これをデバッグするのを手伝ってくれたみんなに感謝します。 再び正常に動作するかどうか教えてください。
修正を確認し、問題を解決しました。
こんにちは、私はここでフラッター付きのジオロケーションサービスを使用しているのは初めてで、このプロジェクトは良さそうですが、現在の場所を取得しようとすると問題が発生し、アプリケーションが停止し、簡単なボタンを押すと閉じられます場所を取得するには...
これは、ダミークラスのonPressイベントハンドラーで使用している現在のコードです。
GeolocationStatus geolocationStatus = await Geolocator().checkGeolocationPermissionStatus();
if (geolocationStatus == GeolocationStatus.granted) {
Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print('position $position');
}
これは私がpubspec.yaml
使用しているパッケージのバージョンです:
geolocator: ^5.3.2+2
そして、これらは私がinfo.plist
ファイルに追加したキーです:
<!-- ...skipped by brevity -->
<key>EnableBackgroundLocationUpdates</key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
<key>NSLocationAlwaysAndWhenInUsageDescription</key>
<string>Always And In Use Permission</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
<!-- skipped by brevity... -->
@mvanbeusekom私が間違っていることについて何か考えはありますか?
@mvanbeusekom 、リンクが機能していないようです。それ以外の場合、この問題については、 EnableBackgroundLocationUpdates
に関する参照が見つかりません。 ところで、このパッケージが大好きです。
@markbeij 、言及されたリンクが5.3.1リリースの一部であったことを修正してください。 現在、フェデレーションプラグインアーキテクチャをサポートするようにフォルダ構造が更新された、大幅に改善されたバージョン6.1.6を使用しています(これにより、複数のプラットフォームのサポートが容易になります)。
README.mdへの現在のリンクは次のとおりです: https :
バックグラウンドモードに関するセクションは次のとおりです。
アプリがバックグラウンドにあるときに更新を受信する場合は、XCodeプロジェクトにバックグラウンドモード機能を追加して([プロジェクト]> [署名と機能]> [+機能]ボタン)、[場所の更新]を選択する必要もあります。 これに注意してください。アプリをAppStoreに送信するときに、アプリがこれを必要とする理由をAppleに詳細に説明する必要があります。 Appleが説明に満足していない場合、アプリは拒否されます。
これにより、基本的にEnableBackgroundLocationUpdates
パラメータがInfo.plist
に追加されます。 ジオロケーターはバックグラウンドでの実行をサポートしておらず、バックグラウンドでの実行中に更新を受信する方法を提供していないことに注意してください。 現時点では、 EnableBackgroundLocationUpdates
が実行するのは、アプリがバックグラウンドにある間(他の方法で呼び出されたり実行されたりすることはありません)、プラットフォーム上の位置情報の更新をリッスンし続けるようにプラットフォームに指示することだけです。
最も参考になるコメント
@LarryJingこの問題を再現することはできませんが、実際に場所の更新をシミュレートしましたか? iOSシミュレータでは、次のメニューオプションを使用して場所をアクティブに設定する必要があります。[機能]-> [場所]: