Skip to main content
이 문서는 v0.1.13 기준입니다. 판별 값은 OneS1ght.sdkVersion 으로 확인할 수 있습니다.
OneS1ght 는 앱 전체에 하나뿐인 정적 진입점입니다 — 인스턴스를 만들지 않으며 모든 API 를 타입에서 직접 호출합니다. 모든 API 는 메인 액터(@MainActor) 에서 호출합니다.

생명주기

initialize 의 파라미터: 기본 baseURLhttps://console.ones1ght.com/api/sdk/v1 입니다.
initialize 는 건물·층을 조회하지 않습니다. 공간 설정은 setFloorMap 의 몫입니다 — 건너뛰면 측위 파이프라인은 돌지만 좌표가 나오지 않습니다(E3001).

측위 세션 — FloorSession

콜백

세션 콜백은 FloorSession 인스턴스에, 디버그 로그는 OneS1ght 타입에 답니다.
0.1.12 부터 onDebugLog등급과 글자를 함께 줍니다((String) -> Void 에서 바뀜). 마이그레이션 가이드 참고.

LogLevel — 로그 등급

Comparable 이라 level >= .warn 처럼 걸러낼 수 있습니다.
“이 층에 등록된 구역이 없다”는 콘솔에서 아직 구역을 만들지 않은 정상 상태.info 입니다. 고장이 아닙니다.
onTriggers 만 서버 응답입니다 — 네트워크가 끊기면 진입 판정은 오지만 트리거는 오지 않습니다.

공간 조회

엔드포인트 하나당 메서드 하나이며, 목록과 단건이 짝을 이룹니다.

층 지정

프로필

고객사 회원 ID 는 서버로 오지 않습니다 — 매핑은 고객사만 보관합니다.
savedProfileId ?? (try await OneS1ght.createProfile(…))컴파일되지 않습니다. ?? 의 오른쪽은 autoclosure 라서 try await 를 담을 수 없습니다 — if let 으로 푸세요.

데이터 전송

좌표는 300건 또는 60초 중 먼저 도달하는 쪽에서 전송됩니다. 백그라운드 진입 시와 end() 시에도 잔여분을 보냅니다.

상태 조회

에러 — SdkError

SdkError 는 SDK 자체가 던지는 5가지입니다. 통신 실패는 ApiError 로 옵니다. 두 타입 모두 .code에러 코드를 꺼낼 수 있습니다.
측위 런타임(E4001E4003)과 공간 설정(E3001E3004)은 throw 되지 않고 로그로만 남습니다 — onDebugLog 또는 콘솔 로그 분석기에서 확인하세요. 전체 목록

모델

Coordinates — 실시간 좌표

Building · Floor — 건물·층

Locator · FloorLocators — 로케이터

Zone — 구역

판정 파라미터는 서버의 구역 메타에서 내려오는 값으로, 콘솔 공간 관리 → 구역 선택 → SDK 영역판정에서 구역마다 설정합니다 (설정 방법). zone.contains(Position(x:y:)) 로 임의 좌표의 구역 포함 여부를 직접 검사할 수도 있습니다.
inCount0 이면 진입이 영원히 확정되지 않아 구역 이벤트가 발생하지 않습니다. 콘솔에서 등록한 신규 구역은 기본 1 이며, 값이 0 인 옛 구역이 있다면 콘솔에서 확인하세요.

Trigger — 개인화 액션

MockPositioningProvider — 테스트용

session.begin(provider:) 로 주입해 UWB 없이 SDK 파이프라인을 확인합니다. ZoneEventStatus.enter · .dwell · .exit 입니다.

스레딩

  • OneS1ght 의 모든 API 는 @MainActor 입니다. SwiftUI 뷰·.task 에서는 그대로 호출하면 되고, 백그라운드 컨텍스트에서는 await MainActor.run { … } 으로 감싸세요.
  • 콜백(onPosition 등)도 메인 액터에서 호출됩니다 — UI 갱신을 바로 해도 안전합니다.

알아둘 제약

iOS 의 UWB 는 포그라운드 전용입니다. 앱이 백그라운드로 가면 측위가 멈추고 버퍼를 비운 뒤, 돌아오면 다시 시작합니다. 플랫폼 제약이라 SDK 가 우회할 수 없습니다.
좌표 버퍼는 메모리에 있습니다. 앱이 강제 종료되면 아직 올리지 못한 좌표는 사라집니다(E5006).
LICENSE 파일은 아직 없습니다. 사용 조건은 별도 계약을 따릅니다.