Skip to main content

0.2.4

  • The positioning engine now runs only while the app is on screen — calling begin() in the background starts the engine when the app comes to the foreground
  • The engine now stops when the app goes to the background or terminates, and the leftover floor-detection beacon region is cleared
  • Fixed opening the app after a background start ending immediately with E3007
  • Fixed zones disappearing from the map on floors with a floor plan after the live connection reconnects

0.2.3

  • No SDK code or behavior changes (docs and code snippets only)
  • MCP code snippets now reflect the ‘Always’ location permission on iOS 27.2 and later
  • MCP code snippets now install with from: "0.2.2"

0.2.2

  • Floor detection now uses multiple locators (switching to a new floor requires 3 or more)
  • The first floor is now confirmed after observing for 1 second
  • The engine now reopens the UWB session by itself when it drops
  • Added the Always location permission section to the setup guide (required on iOS 27.2 and later)

0.2.1

  • Added SdkError.floorNotSet — exhaustive switch statements need a new case
  • Calling setFloorMap(floor) without a building now raises floorNotSet (E3001)
  • Positioning key problems are now reported as E1007 instead of E1002
  • Devices without Bluetooth are now reported as E2002 instead of E2003
  • Zone exit (EXIT) is now sent and onZoneExit called when the app goes to the background
  • Fixed the same zone entry being sent twice after returning from the background
  • Fixed duplicate entry events when the engine restarts because of a zone change

0.2.0

  • Internal types (ApiClient, Req…, Res…, SdkDefaults, etc.) are no longer public
  • Removed MockPositioningProvider — adopt PositioningProvider directly
  • permissions() → requestPermission() (shows the system prompt)
  • putProfile(_:_:) → replaceProfile(_:attributes:) (missing attributes are deleted)
  • getProfile(_:) → fetchProfile(_:)
  • floor(_:_:) → floor(buildingId:floorId:)
  • send() → uploadPendingPositions(), empty() → discardPendingPositions()
  • For the full list, see the CHANGELOG 0.2.0 (Korean; old names only warn)
  • Added FloorSession.onFloorDetected, onStopped and StopReason
  • If the engine stops, it retries after 3, 10 and 30 seconds, then ends the session (.engineFailed)
  • Pause now persists across a trip to the background
  • onDebugLog code lines now have finer levels and are merged into one line
  • E3001 (floor not set) is no longer reported to the console
  • Fixed a crash when empty() was called during a coordinate upload
  • Fixed zone callbacks and pause being ignored with begin(provider:)
  • Fixed runaway coordinate and log uploads while offline
  • Fixed begin() failing with E1004 when identify was called before initialize
  • Fixed baseURL not being applied to building, floor and zone lookups

0.1.24

  • Fixed positioning not coming back when started with Bluetooth off
  • Added E2004 (Bluetooth off) — previously reported as E2003

0.1.23

  • Fixed begin() being silently ignored right after end()
  • Added a warning log when begin() is skipped because positioning is already running

0.1.22

  • Fixed zone enter/exit notifications firing during pause()
  • Fixed the session turning back off when started while the engine was stopping

0.1.21

  • Fixed zones newly drawn in the console at runtime not being detected
  • Coordinates pause for about 1.5 seconds while the engine restarts after a zone change

0.1.20

  • Added FloorSession.pause(), resume() and isPaused

0.1.19

  • Log level for states that keep working, such as E2001 and E2002, changed to WARN
  • Reworded E3001 (starting without a floor is a normal path)

0.1.18

  • Removed the geoSdkKey argument from initialize
  • Removed the geoPartnerKey and geoBaseUrl accessors
  • The positioning key now comes only from the console — E1007 if missing
  • E1005 and E1006 no longer occur

0.1.17

  • Minimum iOS 15 → 18; Xcode 27 (iOS 27 SDK) required
  • Positioning works only on iOS 27 and later — osVersionTooLow below that
  • NSBluetoothAlwaysUsageDescription must be added to Info.plist
  • NSLocationTemporaryUsageDescriptionDictionary (key Positioning) must be added
  • The engine now finds the floor even if the app does not set one
  • Positioning and map keys now come from the console
  • The SDK now requests location permission itself
  • Added new codes such as E1007, E3007, E3008, E3009 and E4004
  • Zone detection moved to the engine; console zone detection values (inDist, etc.) are no longer used

0.1.16

  • Floor plan and zones are now shown even if the locator lookup fails
  • Added E3006 locatorsFetchFailed

0.1.15

  • E3005 planMissing changed to I3002 planMissing (INFO)

0.1.14

  • Positioning now works on floors without a floor plan
  • Added Locator.isPlaced
  • Without a floor plan, Floor size and origin are 0 — check hasPlan

0.1.13

  • Fixed the debug log example in the 0.1.12 tag not compiling

0.1.12

  • onDebugLog and onLog closure arguments changed to { level, line in }
  • Added LogLevel (Comparable)

0.1.11

  • Fixed detection continuing after all zones were deleted
  • Added setLanguage(_:)

0.1.10

  • Fixed positioning not restarting after an interruption

0.1.9

  • initialize no longer fails on unsupported devices — checked in begin() instead
  • Fixed live change events not arriving
  • Fixed the floor list lookup downloading whole floor plans

0.1.8

  • Live change events (onConfigChanged) are now connected before positioning starts

0.1.7

  • Fixed an empty floor list when floor IDs arrived as numbers

0.1.6

  • Fixed the integration example not compiling (no code changes)

0.1.5

  • Repository moved to onecheck-inc/OneS1ght-iOS-SDK
  • The package: identifier must also be changed to OneS1ght-iOS-SDK

0.1.4

  • Initial releases up to 0.1.4 — see the CHANGELOG
  • 0.1.3 and below fail to initialize against the production server — use 0.1.12 or later