目次
概要
Flutterアプリにジオフェンシング機能を実装した際の備忘録 iOS編です。
Android・iOSを対象とし、デスクトップやWebは対象外です。細かな実装部分については、各公式サイトの紹介にとどめています。
この記事に記載のジオフェンス作成方法は、2026年現在少々古いです。最新の実装はApple公式を参照ください。
実装ステップ
- Androidにジオフェンシング機能を実装する
- iOSにジオフェンシング機能を実装する
- Dartからジオフェンシング機能を開始/終了する
- AndroidからDartにジオフェンシングin/outを通知する
- iOSからDartにジオフェンシングin/outを通知する
- 位置情報使用の説明画面を作成する
- ストアリリースの準備をする
iOSにジオフェンシング機能を実装する
まずはApple公式の情報を確認します。
所感ですが、Androidよりは実装が簡単だったような・・・気がします。各々違う難しさはありますが。
XCodeの設定
- Capability「Background Modes」>「Location updates」をチェック
- Info.plitに「Privacy - Location Always and When In Use Usage Description」を追記
delegateの設定
AndroidのReceiverにあたる部分ですね。CLLocationManagerにdelegateを設定します。delegateのオブジェクトをどうするかは悩ましいポイントと思いますが、私の場合、FlutterPluginのクラスをそのまま設定しました。
アプリ側で細かい制御を行いたい場合は、AppDelegate等に設定し、プラグイン側に渡せるようにするのもアリだと思います。
ジオフェンスの作成
CLLocationManager::startMonitoringを使用してジオフェンスを作成します。半径、出入りのタイプなどありますが、ここはAndroid同様にCMSで登録する仕組みとしました。
1つのアプリで登録可能なジオフェンスは20個までです。Androidの5分の1しか登録できないのが厳しいですね。