Flutterで通信キャリア情報を取得する
概要
最近キャリア判定を行う方法について調べる機会があったので、Flutterでの実装方法についてまとめました。
開発環境
Tool | Version |
---|---|
macOS | 11.4 |
Visual Studio Code | 1.58.2 |
Flutter | 2.2.3 |
Dart | 2.13.4 |
実装
キャリア情報を取得するパッケージを探すと下記の2つが見つかります。
(実際には他にもキャリア情報を取得できるパッケージがいくつか存在するのですが、Null safety対応がなされていなかったり、更新頻度が少ないものが多いため、以下2つを挙げました。)
telephony
はドキュメントも整っており非常に使いやすいのですが、現状Androidのみしか対応していないため、今回はcarrier_info
を使ってキャリア判定処理を実装します。
dependencies: carrier_info: ^2.0.1
キャリア情報はキャリア名かMobileCountryCode(MCC)とMobileNetworkCode(MNC)の組み合わせで判定できます。
MCCは運用地域を示す3桁の番号で、日本だと440
と441
が使用されています。
また、MNCは通信キャリアを識別する2桁の番号で00
だとソフトバンク、10
だとNTTドコモであることが判別できます。
carrier_info
では上記それぞれの情報を取得することができるので、それぞれの値を比較してキャリア情報を判別することができます。
下記のようなUtilクラスを作成し、自分の持っている端末でキャリア情報を取得してみました。
import 'package:carrier_info/carrier_info.dart'; abstract class NetworkUtil { /// 携帯サービスプロバイダーを取得する static Future<String?> getCarrierName() async { return await CarrierInfo.carrierName; } /// ネットワーク番号を取得する static Future<String> getMobileNetworkOperator() async { // 運用地域を示す3桁の番号 final mobileContryCode = await CarrierInfo.mobileCountryCode; // 通信キャリアを識別する2桁の番号 final mobileNetworkCode = await CarrierInfo.mobileNetworkCode; // 公衆陸上移動体ネットワーク番号(PLMN) return '$mobileContryCode$mobileNetworkCode'; } }
これで、それぞれのキャリアごとのPLMNとキャリア名をenum等で定義して取得結果と比較すれば、どのキャリアかを判定して処理を分けたりができそうですね。
まとめ
今回はFlutterで通信キャリア情報を取得する方法についてまとめました。
あまり利用機会がないかもしれませんが、自分のように調べる機会が出てきた方の役に立てたら幸いです。