【Flutter】iOSシミュレーターで位置情報が取得できない解決方法

【Flutter】iOSシミュレーターで位置情報が取得できない解決方法

iOSシミュレーターで位置情報が取得できない!?

Flutterアプリの開発で位置情報を使用したくてlocation: ^8.0.1のパッケージを使っていたところ、iOSシミュレーターでgetLocation()した際に、エラーなしでサイレントに失敗する(値が返ってこない)現象が起きました。

final location = Location();
await location.enableBackgroundMode(enable: true);
Timer.periodic(const Duration(seconds: 30), (timer) async {
  final currentLocation = await location.getLocation();
  print('📍Location: $currentLocation'); // ← このログが出ない
});

getLocation()がiOSで動かない原因

iOSシミュレーターの位置情報設定を「Custom Location…」にしていたことが原因で値が返ってこなかったようです。

iOSシミュレータの位置情報設定 Custom Location...

iOSシミュレータのLocation設定

iOSシミュレータのLocation設定には、以下があります。

None

設定なし

Custom Location...

必要な緯度と経度の値を挿入して、シミュレーターでカスタムの現在の場所を設定できます。

City Run

人間の走行速度に基づいて、地図上で経路上の位置マーカーをシミュレートでき、ウォーキング/ランニング機能のテストが必要なアプリのテストに非常に役立ちます。

City Bicycle Ride

自転車の走行速度に合わせて、地図上でルート上の位置マーカーをシミュレートでき、サイクリング機能のテストが必要なアプリのテストに非常に役立ちます。

Freeway Drive

走行速度に応じて地図上の位置マーカーをシミュレートでき、運転機能をテストする必要があるアプリのテストに非常に役立ちます。

Apple

ポインターとカメラが米国カリフォルニア州のAppleオフィスに移動します。

まとめ

iOSでカスタム値のgetLocation()が動作しないのには、シミュレーターもしくはパッケージに問題がありそうです。

公式パッケージのissueではシミュレーターの問題みたいです。

これはおそらく iOS シミュレータの問題のようです。 https://github.com/Lyokone/flutterlocation/issues/955#issuecomment-2381266399

まずは、シミュレーターの位置情報設定を確認してみてください。

Custom Location...を使えると便利なのですが、、、また新しいことが分かったら追記しておきます。

記事を書いた人

Matsuura

エンジニア

Matsuura

Anycloudでエンジニアしてます!主にFlutter・Typescript