【Flutter】network_info_plusでネットワーク情報を取得する

Flutter

network_info_plusとは

network_info_plusはFlutterアプリケーションがネットワーク情報を取得し、それに基づいて設定を行うためのプラグインです。
Wi-Fi関連の情報(SSID、BSSID、IPアドレスなど)を簡単に取得することができます。

network_info_plus | Flutter package
Flutter plugin for discovering information (e.g. WiFi details) of the network.

使い方

インストール方法

まず、pubspec.yamlファイルに以下の依存関係を追加します。

dependencies:
  network_info_plus: ^5.0.3

基本的な使用方法

以下のコードは、Wi-Fiに関する情報を取得する基本的な使用例です。

import 'package:network_info_plus/network_info_plus.dart';

void main() async {
  final info = NetworkInfo();

  final wifiName = await info.getWifiName(); // "FooNetwork"
  final wifiBSSID = await info.getWifiBSSID(); // 11:22:33:44:55:66
  final wifiIP = await info.getWifiIP(); // 192.168.1.43
  final wifiIPv6 = await info.getWifiIPv6(); // 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  final wifiSubmask = await info.getWifiSubmask(); // 255.255.255.0
  final wifiBroadcast = await info.getWifiBroadcast(); // 192.168.1.255
  final wifiGateway = await info.getWifiGatewayIP(); // 192.168.1.1
}

パーミッション設定

Wi-Fi関連の情報を取得するためには、デバイスの位置情報へのアクセス許可が必要です。以下のようにpermission_handlerパッケージを使用してパーミッションをリクエストします。

import 'package:permission_handler/permission_handler.dart';

void main() async {
  if (await Permission.location.request().isGranted) {
    // パーミッションが許可された場合にWi-Fi情報を取得
    final info = NetworkInfo();
    final wifiName = await info.getWifiName();
    // 他のWi-Fi情報の取得処理
  } else {
    // パーミッションが拒否された場合の処理
  }
}

Androidでのパーミッション設定

AndroidでWi-Fi情報を取得するためには、以下のパーミッションをAndroidManifest.xmlに追加します。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

iOSでのパーミッション設定

iOSでWi-Fi情報を取得するためには、Info.plistに以下のキーを追加します。

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>アプリが常に位置情報を利用する理由を説明してください</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>アプリが前面で実行中に位置情報を利用する理由を説明してください</string>
<key>com.apple.developer.networking.wifi-info</key>
<true/>

さらに、iOS 14以降では、NEHotspotNetwork.fetchCurrentWithCompletionHandlerメソッドを使用してWi-Fi情報を取得します。これには以下の条件のいずれかを満たす必要があります:

  1. CoreLocation APIを使用し、正確な位置情報へのアクセス許可があること。
  2. NEHotspotConfiguration APIを使用して現在のWi-Fiネットワークを構成していること。
  3. アクティブなVPN設定がインストールされていること。
  4. アクティブなNEDNSSettingsManager設定がインストールされていること。

これらの条件を満たさない場合、Wi-Fi情報は取得できません。

タイトルとURLをコピーしました