메인 콘텐츠로 건너뛰기

시스템 요구사항

측위정보 수신 미지원 기기인 경우 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 에 아래 다섯 가지 권한 문구를 하나도 빠짐없이 추가합니다. 추가 방법은 [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

프로필

사용자(계정 또는 기기) 한 명의 동선은 프로필 단위로 관리됩니다.
프로필 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() 를 한 번만 부릅니다.
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 와 다른 점

문제 해결하기

에러 코드

개발 중 발생하는 오류 내용을 안내합니다.