Skip to main content
For installation and initialization, see the SDK Quickstart.

Receiving live positions

The session’s onPosition callback delivers the user’s coordinates.
It fires independently of server uploads, up to 4 times per second.
Coordinates are in meters (m).

Displaying the floor plan

Show the user the floor plan they are being positioned on.
You need a building ID and a floor ID to render it. To draw the user’s position on top of it, map the onPosition coordinates onto the plan.
hasPlan == false means no floor plan has been set up for that floor.
See Guide — Floor plan placement · clusters.
If you need the locator layout and the UWB session ID, look them up separately with locators(_:_:). When positioningReady is false, that floor has no locator or session data and positioning cannot start.

Zone events

Enter, exit and dwell arrive as separate callbacks. The decision is made on the device, so there is no server round trip.
Zones for each floor are configured in Space management.
If a floor has no zones at all, coordinates still accumulate but no enter or exit fires (E3004).

Refreshing zone data

After you change and save zones in the console, refresh them from your code.

Creating and connecting a profile

To collect a customer’s movement, issue a profile for each account and keep the ID in your own storage.
The issued profile ID must be stored by you. A lost profile ID cannot be recovered, so handle it with care.

Selecting a building and floor

To collect positioning data you must set a building and a floor. One building can have several floors. setFloorMap sets the locator data used for positioning and the map together with the zone data shown to the user.
Building and floor data requires geoSdkKey at initialization — without it you cannot look them up.

Handling unsupported devices

Using the OneS1ght SDK requires the device to meet the minimum requirements. SDK Quickstart
Even when it is installed on an unsupported device, the app keeps working without any impact from the SDK.
isDeviceAvailable is the short form for checking whether the device can use the SDK, and it returns a Boolean (true/false).

Controlling data upload

The OneS1ght SDK uploads collected positioning data on its own schedule, but you can flush or drop the buffer immediately when you need to.

Resetting the session

Discards the accumulated session and starts a new one.

Using API keys per environment

In the OneS1ght console you can issue keys as Development or Production.
The two environments are isolated and cannot reach into each other.
Set the API key per environment so that test traffic does not mix into production data.
Because of an iOS platform restriction, real positioning cannot be verified in the simulator. Build to a real device and test there.

Troubleshooting

How to collect logs

How to work with logs during development.

SDK error codes

What the errors you hit during development mean.