Skip to main content

개요

SDK 는 각 단계가 통과했는지, 무엇이 막혔는지를 코드로 남깁니다.
왜 문장이 아니라 코드인가. 문구는 판올림마다 바뀌지만 코드는 그대로입니다. 문의·문서·콘솔 필터가 같은 값을 가리키게 하려면 고정된 식별자가 필요합니다.사람이 읽는 문장은 콘솔이 보는 사람의 화면 언어로 만들어 줍니다 — 일본 사용자의 기기에서 난 에러도 한국인 관리자에게는 한국어로 보입니다.
전체 코드 목록은 에러 코드 안내에 있습니다.

준비

앱에서 로그 보기

onDebugLog 에 클로저를 연결하면 SDK 가 남기는 모든 줄이 그리로 옵니다.
initialize 보다 먼저 연결하세요. 나중에 연결하면 초기화 단계의 로그를 놓칩니다 — 연동 초기에 가장 많이 막히는 구간이 바로 거기입니다.
로그를 파일로 뽑아 문의에 첨부하는 방법은 로그 출력 방법을 보세요.

콘솔에서 로그 보기

앱에 붙지 않아도 됩니다. SDK 는 로그를 서버로도 올리고, 관리자는 콘솔에서 봅니다.
운영 중인 사용자 기기에서 난 문제는 이쪽으로만 볼 수 있습니다. Xcode 콘솔은 개발자 손에 기기가 있을 때만 쓸 수 있습니다.

정상 흐름은 이렇게 찍힙니다

연동이 제대로 됐다면 아래 순서로 나옵니다. 없는 줄이 곧 막힌 지점입니다.
I5001 은 콘솔에서 정한 전송 주기가 기본값(4회/초)과 다를 때만 나옵니다. 안 보인다고 문제가 아닙니다.

증상별로 어디부터 볼지

볼 코드 — E3001 · E3003 · E4002 · E4003
1

층을 지정했나

setFloorMap 을 부르지 않으면 파이프라인은 돌지만 좌표가 나오지 않습니다(E3001). initialize 는 건물·층을 조회하지 않습니다 — 단일 매장 앱이라도 한 번은 불러야 합니다.
2

그 층에 UWB 세션이 있나

E3003 이면 GeoSpace 쪽 설정 문제입니다. 앱 코드를 고쳐도 풀리지 않습니다. locators(_:_:)positioningReady 로도 확인할 수 있습니다.
3

로케이터 신호가 잡히나

측위 시작 7초 뒤 E4003(일부 미수신)이 뜨면 해당 로케이터의 전원·위치를 확인하세요. 신호는 3대 이상 잡히는데 좌표가 안 나오면 E4002등록 좌표와 실제 배치 불일치를 의심합니다.
4

현장 안에 있나

로케이터가 설치된 영역 밖에서는 좌표가 나오지 않습니다. 에러도 나지 않습니다.
볼 코드 — E3004
  • 콘솔 공간 관리에 그 층의 구역이 등록돼 있는지 확인합니다.
  • 좌표는 나오는데 진입만 안 잡힌다면 구역의 판정 파라미터를 봅니다 — 특히 inCount0 이면 진입이 영원히 확정되지 않습니다. (SDK 영역판정)
  • 콘솔에서 방금 구역을 바꿨다면 await OneS1ght.refreshZones() 로 다시 받으세요.
볼 코드 — E5001 · E5002onZoneEnter기기 안 판정이라 네트워크가 끊겨도 옵니다. onTriggers서버 응답이라 오지 않습니다. 앱 버그가 아니라 네트워크·서버 문제입니다.콘솔에서 그 구역에 걸린 시책이 실행 상태인지도 함께 확인하세요.
볼 코드 — E2001 · E2002iOS 27 이상 · iPhone 12 이상인지 확인합니다. deviceAvailability 로 사전 분기해 미지원 기기에서는 측위 UI 를 숨기세요 — 앱 자체는 정상 동작해야 합니다.
볼 코드 — E2003이미 한 번 거부한 상태입니다. 앱에서 재요청할 수 없습니다 — 설정 앱으로 유도하세요.
볼 코드 — E1002
  • 키 값에 공백·줄바꿈이 섞이지 않았는지 확인합니다.
  • 콘솔에서 그 키가 폐기되지 않았는지 확인합니다.
  • 실행 환경(Production / Development)이 맞는지 확인합니다.
E1002재시도로 풀리지 않습니다.
볼 코드 — E1002 · E1003 · E2001 · E2002 · E5001 · E5005
SDK 0.1.3 이하는 현재 서버와 초기화되지 않습니다. 서버가 내려주는 설정 자루에 정수·불리언 값이 들어가면서 옛 판이 응답을 읽지 못합니다 — 0.1.4 이상으로 올리세요. (릴리즈 노트)
볼 코드 — E5001 · E5006좌표는 300건 또는 60초 단위로 올라갑니다 — 방금 걸은 동선이 바로 안 보여도 정상입니다. await OneS1ght.send() 로 앞당겨 확인하세요.앱을 강제 종료하면 미전송 좌표는 사라집니다(E5006, 인메모리 버퍼).

주의사항

로그 전송은 실패해도 앱을 막지 않습니다. 로그는 부가 기능이라, 전송에 실패한 묶음은 재시도하지 않고 버립니다. 좌표처럼 붙들고 재시도하면 진짜 데이터가 밀리기 때문입니다. 콘솔에 로그가 일부 비어 있어도 측위 데이터는 정상일 수 있습니다.
에러는 즉시 올라가고, 나머지는 모아서 올라갑니다. ERROR 는 앱이 죽기 전에 남겨야 원인을 알 수 있어 바로 전송합니다. 정보 로그는 50건 또는 60초 기준으로 모입니다 — 콘솔에서 방금 찍은 정보 로그가 안 보인다면 잠시 기다려 보세요.
같은 코드가 쏟아지면 오래된 것부터 버립니다(기기당 2000줄 상한). 최근 상황이 진단에 더 쓸모 있다는 판단입니다. 폭주 중인 문제를 볼 때는 처음이 아니라 마지막 줄을 보세요.
로그 보관 기간은 30일입니다. 측위 좌표(90일)보다 짧습니다 — 진단이 목적이라 그만큼 둘 이유가 없습니다.
콘솔의 로그 레벨 설정은 아직 기기까지 내려가지 않습니다. 지금은 앱이 남기는 로그를 콘솔에서 조절할 수 없습니다.

문의할 때

developers@onecheck.co.kr 로 아래를 함께 보내 주세요. 코드 하나만 있어도 확인 범위가 크게 좁혀집니다.

관련 문서

에러 코드 안내

E1001 ~ E5006 전체 목록과 조치.

로그 출력 방법

Xcode · Console 앱으로 로그를 파일로 뽑기.

iOS 연동 가이드

초기화부터 측위 시작까지 전 과정.

코딩 에이전트 (MCP)

에이전트에게 “E3003이 뭐야” 라고 물어보기.