メインコンテンツへスキップ

システム要件

測位情報を受信できない端末では SDK が動作を停止し、稼働中のアプリには影響しません。

SDK のインストール

1
pub.dev からパッケージを追加します。
手動で追加する場合は、pubspec.yaml の dependencies に追加します。
pubspec.yaml
2
Dart コードでインポートします。
Dart

iOS 設定

1

Swift Package Manager を有効にする

2

デプロイターゲットを上げる

ios/Runner.xcodeproj の IPHONEOS_DEPLOYMENT_TARGET を 18.0 に上げます。
3

権限説明文を追加する

ios/Runner/Info.plist に以下 5 つの権限説明文を 1 つも欠かさず追加します。追加方法は iOS 設定ガイド を参照してください。
Info.plist
iOS 27.2 以降では、位置情報権限が**「常に」**でないとフロアを検出できません。SDK は「常に」をリクエストしないため、「アプリの使用中のみ」の許可後にアプリから直接リクエストしてください。

Android 設定

1

MainActivity を変更する

SDK の権限リクエストには ComponentActivity が必要なため、MainActivity を FlutterFragmentActivity に変更します。
MainActivity.kt
2

ビルドバージョンを合わせる

android/app/build.gradle.kts
測位権限は Android SDK のマニフェストから自動でマージされます。

SDK の初期化

測位エンジンを稼働させるための初期化を開始します。 すべての呼び出しは Future、イベントは Stream です。
Dart

プロフィール

ユーザー(アカウントまたは端末)1 人の動線はプロフィール単位で管理されます。
プロフィール ID は一意で、紛失すると復元できないため保管に注意してください。

プロフィールの作成

新しいプロフィールを作成するとプロフィール ID が返ります。属性はレポート・指標のセグメントとして使われ、Key-Value に制約はありません。
発行された ID はアプリ(または自社サーバー)に保管し、起動のたびに測位前に identify で紐付けます。
プロフィール属性に氏名・電話番号・会員 ID のような機微な情報を入れないでください。
年代("20s")のように個人を特定できない値だけを入れます。
Dart

プロフィール情報の取得

プロフィール ID から、保存されたパーソナライズ属性を取得します。
Dart

プロフィール情報の更新

パーソナライズ属性はまるごと置き換えられます。更新後、以前の値は削除され、元に戻せません。
Dart

プロフィールの削除

パーソナライズ属性を削除します。削除した属性は元に戻せません。
Dart

建物・フロアの選択

測位座標を受信するには、ロケーターが設置された建物とフロアを選択する必要があります。

BLE 受信で選択

SDK の測位エンジンがロケーターの BLE 信号からフロアを検出すると、onFloorDetected にフロア ID が届きます。
フロアを見失うと null が届きます。
Dart

手動で選択

ユーザーにフロアを選ばせる場合や、測位前に地図を先に描画する場合は、建物とフロアを直接指定します。
Dart

リアルタイム測位情報の受信

floorSession() で測位セッションを取得し、begin() で開始、end() で終了します。
位置は onPosition で受け取り、座標(メートル)が最大で毎秒 4 回届きます。
Dart

ゾーンイベント

コンソールの空間管理で描いたゾーンの進入・退出・滞在イベントを受け取ります。判定は端末内で行われるため、すぐに届きます。
ゾーンに紐付いた施策(クーポン・サイネージなど)はサーバーがマッチングし、onTriggers で届きます。
イベントはすべて Stream なので、複数の場所で同時に購読しても構いません。
Dart

ゾーン情報の更新

コンソールでゾーン情報が変わると onConfigChanged が流れてきます。連続して届く場合は 1 秒ほどまとめて、refreshZones() を 1 回だけ呼びます。
Dart

図面の表示

ロケーターに紐付く図面と、ユーザーの現在位置を表示できます。
図面を設定しない場合、背景はグリッドで表示されます。
Dart

その他のオプション

データ送信の制御

座標は 300 件たまるか、前回の送信から 60 秒経過すると自動で送信されます。ただし、アプリが強制終了されると座標は破棄されます。
Dart

セッションのリセット

現在のセッションを破棄します。新しいセッションは作成しないため、続けて使うには initialize を再度呼び出してください(別のキーでも可能です)。
Dart

測位終了時の処理

測位エンジンが終了すると onStopped イベントが発生し、測位可能な状態へ戻せます。
Dart

対応端末の確認

deviceAvailability はネットワーク(インターネット)接続なしで即時に確認でき、
測位に対応しない端末でもアプリの動作には影響しません。
Dart

付録

権限のリクエスト

requestPermission() は、SDK の利用に必要なすべての権限をまとめてリクエストします。
ユーザーが一度でも拒否するとアプリから再リクエストできないため、設定アプリへ案内してください。
Dart

デバッグログ

デバッグログを確認するには、SDK の初期化(initialize)の直前に登録してください。
ログは flutter run を実行したターミナルや、IDE のデバッグコンソールに出力されます。
端末から直接取得する方法は iOS・Android ガイドを参照してください。
ユーザーの測位情報はシミュレーター・エミュレーターでは確認できません。
Dart
SDK のログ・案内文の言語は setLanguage で指定します — 'ko'・'ja'・'en'、null なら端末の言語に従います。
Dart

ネイティブ SDK との違い

トラブルシューティング

エラーコード

開発中に発生するエラーの内容を案内します。