이 문서는 v0.1.13 기준입니다. 판별 값은
OneS1ght.sdkVersion 으로 확인할 수 있습니다.OneS1ght 는 앱 전체에 하나뿐인 정적 진입점입니다 — 인스턴스를 만들지 않으며 모든 API 를 타입에서
직접 호출합니다. 모든 API 는 메인 액터(@MainActor) 에서 호출합니다.
생명주기
initialize 의 파라미터:
기본
baseURL 은 https://console.ones1ght.com/api/sdk/v1 입니다.
측위 세션 — FloorSession
- SwiftUI
- UIKit
콜백
세션 콜백은FloorSession 인스턴스에, 디버그 로그는 OneS1ght 타입에 답니다.
LogLevel — 로그 등급
Comparable 이라 level >= .warn 처럼 걸러낼 수 있습니다.
“이 층에 등록된 구역이 없다”는 콘솔에서 아직 구역을 만들지 않은 정상 상태라
.info 입니다. 고장이 아닙니다.공간 조회
엔드포인트 하나당 메서드 하나이며, 목록과 단건이 짝을 이룹니다.층 지정
프로필
고객사 회원 ID 는 서버로 오지 않습니다 — 매핑은 고객사만 보관합니다.
데이터 전송
좌표는 300건 또는 60초 중 먼저 도달하는 쪽에서 전송됩니다. 백그라운드 진입 시와end() 시에도 잔여분을 보냅니다.
상태 조회
에러 — SdkError
SdkError 는 SDK 자체가 던지는 5가지입니다. 통신 실패는 ApiError 로 옵니다.
두 타입 모두 .code 로 에러 코드를 꺼낼 수 있습니다.
- SwiftUI
- UIKit
측위 런타임(
E4001E4003)과 공간 설정(E3001E3004)은 throw 되지 않고 로그로만 남습니다 —
onDebugLog 또는 콘솔 로그 분석기에서 확인하세요. 전체 목록
모델
Coordinates — 실시간 좌표
Building · Floor — 건물·층
Locator · FloorLocators — 로케이터
Zone — 구역
판정 파라미터는 서버의 구역 메타에서 내려오는 값으로, 콘솔 공간 관리 → 구역 선택 → SDK 영역판정에서
구역마다 설정합니다 (설정 방법).
zone.contains(Position(x:y:)) 로 임의 좌표의 구역 포함 여부를 직접 검사할 수도 있습니다.
Trigger — 개인화 액션
MockPositioningProvider — 테스트용
session.begin(provider:) 로 주입해 UWB 없이 SDK 파이프라인을 확인합니다.
ZoneEventStatus 는 .enter · .dwell · .exit 입니다.
스레딩
OneS1ght의 모든 API 는@MainActor입니다. SwiftUI 뷰·.task에서는 그대로 호출하면 되고, 백그라운드 컨텍스트에서는await MainActor.run { … }으로 감싸세요.- 콜백(
onPosition등)도 메인 액터에서 호출됩니다 — UI 갱신을 바로 해도 안전합니다.