locationとは
location
プラグインは、AndroidおよびiOSデバイスでの位置情報の取得をサポートするFlutterプラグインです。位置情報が変更されたときにコールバックを提供します。
location | Flutter package
Cross-platform plugin for easy access to device's location in real-time.
使い方
インストール方法
パッケージの pubspec.yaml
ファイルに追加します。
dependencies:
location: ^6.0.2
Android設定
Androidでバックグラウンドモードを使用するには、位置情報にアクセスする前に enableBackgroundMode({bool enable})
APIを使用してバックグラウンドモードを有効にし、必要なパーミッションを追加します。アプリケーションの AndroidManifest.xml
ファイルに次のパーミッションを追加します。
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
iOS設定
iOSで使用するには、 Info.plist
ファイルに次のパーミッションを追加します。
<key>NSLocationWhenInUseUsageDescription</key>
<string>アプリ使用中の位置情報の利用についての説明</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>常におよびアプリ使用中の位置情報の利用についての説明</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
Web設定
Webの場合、特に設定は不要で、そのまま動作します。
macOS設定
macOSでは、アプリケーションが適切に「サンドボックス化」されており、位置情報が有効になっていることを確認します。これをXcodeで次の手順で行います。
- プロジェクトナビゲーターでアプリケーションのターゲットをクリックします。
- 「Capabilities」タブをクリックし、「App Sandbox」項目をオンにします。
- 「App Data」セクションで「Location」を選択します。
Info.plist
ファイルに次のパーミッションを追加します。
<key>NSLocationWhenInUseUsageDescription</key>
<string>アプリ使用中の位置情報の利用についての説明</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>常に位置情報の利用についての説明</string>
使用方法
パッケージをインポートし、位置情報サービスの状態とパーミッション状態を手動で確認します。
import 'package:location/location.dart';
Location location = new Location();
bool _serviceEnabled;
PermissionStatus _permissionGranted;
LocationData _locationData;
_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
_serviceEnabled = await location.requestService();
if (!_serviceEnabled) {
return;
}
}
_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
_permissionGranted = await location.requestPermission();
if (_permissionGranted != PermissionStatus.granted) {
return;
}
}
_locationData = await location.getLocation();
位置情報が変更されたときに連続してコールバックを受け取ることも可能です。
location.onLocationChanged.listen((LocationData currentLocation) {
// 現在の位置情報を使用
});
バックグラウンドで位置情報を受け取るには、次のようにします。
location.enableBackgroundMode(enable: true)
主要なメソッド
requestPermission()
: 位置情報のパーミッションをリクエストします。パーミッションの状態を返します。hasPermission()
: 位置情報のパーミッションの状態を返します。serviceEnabled()
: 位置情報サービスが有効かどうかを返します。requestService()
: 位置情報サービスを有効にするようユーザーにリクエストします。changeSettings()
: 位置情報リクエストの設定を変更します。getLocation()
: ユーザーの位置を一度だけ取得します。onLocationChanged
: ユーザーの位置のストリームを取得します。enableBackgroundMode({bool enable})
: バックグラウンドモードで位置情報を取得できるようにします。