시스템 요구사항
측위정보 수신 미지원 기기에서는 SDK 측위만 동작하지 않고 앱은 그대로 동작합니다.
단
initialize 는 키 · 통신 오류를, session.begin() 은 미지원 기기 오류를 던지므로 아래 예제처럼 try/catch(Java 는 onError)로 받아 주세요.
SDK 설치
1
settings.gradle(.kts) 에 Maven Central 저장소를 추가해 주세요.settings.gradle.kts
2
앱 모듈의 빌드 파일에 OneS1ght SDK를 추가합니다.
3
JVM target 버전과
BuildConfig 옵션을 확인합니다. JVM 은 1.8 이상을 권장합니다.Android 권한 설정
측위에 필요한 권한은 SDK 매니페스트가 앱에 자동으로 병합해 줍니다.
런타임 권한은
requestPermission(activity) 한 번으로 함께 요청합니다. 이미 허용된 권한이면 창 없이 바로 돌아오며,
initialize 전에도 부를 수 있습니다. 사용자가 거부하거나 30초 안에 답하지 않으면
DENIED 입니다. 시스템이 권한 창을 더 이상 띄우지 않으면 설정 앱으로 안내하세요.
SDK 초기화
측위 엔진을 가동하기 위한 초기화 작업을 시작합니다.프로필
사용자(계정 또는 기기) 한 명의 동선은 프로필 단위로 관리됩니다.프로필 ID 는 고유하며, 분실하면 다시 찾을 수 없으니 보관에 주의해 주세요.
프로필 생성
새 프로필을 만들면 프로필 ID 를 돌려받습니다. 속성은 레포트 · 지표의 세그먼트로 쓰이며 Key-Value 에 제약이 없습니다.발급받은 ID 는 앱(또는 고객사 서버)에 보관해 두고, 매 실행마다 측위 전에
identify 로 연결합니다.
프로필 정보 조회
프로필 ID를 통해 저장된 개인화 속성을 조회합니다.프로필 정보 수정
개인화 프로필 속성을 통째로 교체됩니다. 수정 후 기존 값은 삭제되며 되돌릴 수 없습니다.프로필 삭제
개인화 프로필 속성을 삭제합니다. 삭제된 속성은 되돌릴 수 없습니다.건물, 층 선택
측위좌표를 수신하려면 로케이터가 있는 건물과 층을 선택해야 합니다.BLE 수신으로 선택
SDK 의 측위 엔진이 로케이터의 BLE 신호로 층을 찾으면onFloorDetected 로 층 ID 가 옵니다. 층을 잃으면
null 이 옵니다.
수동으로 선택
사람이 층을 고르게 하거나 측위 전에 지도를 먼저 그릴 때는 건물과 층을 직접 지정합니다.측위정보 실시간 수신
floorSession() 으로 측위 세션을 얻고, begin() 으로 시작해 end() 로 종료합니다. 위치는
onPosition 으로 받으며, 좌표(미터)는 엔진이 내는 속도 그대로 옵니다. 서버로는 콘솔 설정값(기본 초당 4회)으로 줄여 전송됩니다.
begin() 은 권한을 받은 뒤에 부르세요. 권한 없이 부르면 오류 없이 시작되지만 좌표가 나오지 않고 E2003 이 남습니다. 측위 중에 다시 부른
begin() 은 무시(WARN 로그)되므로, 사용자가 권한을 허용한 뒤에는 end() 를 부르고 begin() 을 다시 부르세요.구역 이벤트
콘솔 공간 관리에서 그린 구역의 진입 · 이탈 · 체류 이벤트를 받습니다. 판정은 기기 안에서 이루어져 바로 옵니다.구역에 걸린 시책(쿠폰 · 사이니지 등)은 서버가 매칭해
onTriggers 로 전달됩니다.
구역정보 업데이트
콘솔에서 구역 정보가 바뀔 때onConfigChanged 가 호출됩니다. 연달아 오면 1초쯤 모아서 refreshZones() 를 한 번만 부릅니다.
도면 표시
로케이터와 관련된 도면과 사용자의 현재 위치를 표시할 수 있습니다.도면 설정을 하지 않을 경우 배경은 격자로 표시됩니다.
기타 옵션
데이터 전송 제어
좌표는 300건이 채워지거나 전송 후 60초 경과 시 자동 전송됩니다. 단 앱이 강제 종료되면 좌표는 폐기됩니다.세션 재설정
세션을 버리고 측위를 멈추며, 저장된 SDK 키와 건물 정보(setFloorMap 의 건물)를 지웁니다. 새 세션을 만들지 않습니다. 이후 대부분의 API 는
SdkError.NotInitialized(E1001)를 던지므로 initialize 를 다시 불러야 합니다. 런타임에 키를 바꿀 때 씁니다. identify 로 연결한 프로필은 남습니다.
측위 종료 처리
측위 엔진이 종료된 경우onStopped 이벤트가 실행되며 측위 가능 상태로 전환 가능합니다.
지원 기기 확인
deviceAvailability 는 네트워크(인터넷) 연결 없이 바로 확인할 수 있습니다. 단 기기 칩 조회에 앱
Context 가 필요해 initialize()(또는 requestPermission(activity)) 뒤에 읽어야 합니다. 그 전에 읽으면 Android 17 이상 기기도
DEVICE_NOT_SUPPORTED 가 오고 onDebugLog 에 WARN 이 남습니다(Android 17 미만은 항상 OS_VERSION_TOO_LOW).
부록
Java 에서 사용하기
모든 비동기 API 는 같은 이름으로 두 가지 형태를 제공합니다.- 반환값이 없는 API 는
Callback<Void>를 씁니다. - 이벤트 콜백(
ZoneListener·PositionListener등)은fun interface라 Java 람다로 바로 등록합니다 —session.setOnZoneEnter(zone -> …). - 상태 값은 getter 로 읽습니다 —
OneS1ght.isInitialized(),OneS1ght.getDeviceAvailability(),session.isRunning(). - 콜백 속성은 setter 로 등록합니다 —
session.setOnStopped(…),OneS1ght.setOnDebugLog(…). - Java 앱은
compileOptions를 1.8 이상으로 두면 되고 Kotlin 설정이 필요 없습니다.
디버그 로그
디버그 로그 확인시 SDK 초기화문 선언(initialize) 직전에 등록해 주세요. 로그 확인은 Android Studio 상 Logcat(필터
tag:OneS1ght) 또는 adb 로 확인할 수 있어요.
adb 로 조회 시
문제 해결하기
에러 코드
개발 중 발생하는 오류 내용을 안내합니다.