SpaceSDK-iOS는 FREEGROW Inc.에서 개발한 UWB 기반 iOS SDK로,
BLE 검색 및 거리 측정, 방향 계산, RTLS 실시간 위치 추정 기능을 손쉽게 구현할 수 있도록 지원합니다.
단일 클래스 GrowSpaceSDK
를 통해 복잡한 연결 흐름 없이 간편하게 UWB 기능을 사용할 수 있습니다.
주요 기능
- BLE + UWB 기반 거리 측정 (Ranging)
- RTLS 기반 위치 추정 (x, y, z 좌표 계산)
- 디바이스 실시간 연결 / 해제 콜백 제공
설치 방법
Swift Package Manager(SPM) 지원
- Xcode →
File
→Add Packages
선택 - 아래 URL 입력
https://github.com/freegrowenterprise/SpaceSDK-iOS
요구 사항
Software
항목 | 권장 사양 |
---|---|
iOS | 16.0 이상 |
Xcode | 14 이상 |
Swift | 5.7 이상 |
Hardware
항목 | 내용 |
---|---|
지원 기기 | UWB 지원 iOS 기기 목록 보기 |
장치 | GrowSpace UWB 디바이스 필수 |
Info.plist 권한 설정
<key>NSBluetoothAlwaysUsageDescription</key>
<string>이 앱은 UWB 장치와 BLE 통신을 위해 Bluetooth 권한이 필요합니다.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>이 앱은 BLE 기반 장치 검색 및 연결을 위해 위치 권한이 필요합니다.</string>
<key>NSNearbyInteractionUsageDescription</key>
<string>이 앱은 근거리 상호작용을 위해 UWB 기능을 사용합니다.</string>
<key>NSCameraUsageDescription</key>
<string>UWB 장치와의 거리, 방향 정확도를 높이기 위해 카메라 접근이 필요합니다.</string>
<key>NSMotionUsageDescription</key>
<string>정확한 위치 계산을 위해 모션 센서 접근이 필요합니다.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>UWB 장치와의 BLE 연결을 위해 이 권한이 필요합니다.</string>
초기화
let growSpaceSDK = GrowSpaceSDK()
거리 측정 시작
growSpaceSDK.startUWBRanging(
maximumConnectionCount: 4,
replacementDistanceThreshold: 8,
onUpdate: { result in
let name = result.deviceName
let distance = result.distance
let azimuth = result.azimuth
let elevation = result.elevation
DispatchQueue.main.async {
// 결과를 UI에 표시하는 로직
updateDeviceUI(
name: name,
distance: distance,
azimuth: azimuth,
elevation: elevation
)
}
},
onDisconnect: { result in
DispatchQueue.main.async {
removeDeviceUI(name: result.deviceName)
}
}
)
거리 측정 중지
growSpaceSDK.stopUWBRanging {
print("✅ 거리 측정 종료")
}
RTLS 위치 추정
growSpaceSDK.startUWBRanging(
onUpdate: { result in
// 거리 수신 결과 누적
anchorResults[result.deviceName] = result
// 앵커 ID와 위치 매핑 정보로 RTLS 계산
let anchors = convertToAnchorResults(
from: anchorResults,
coordinates: anchorCoordinateMap
)
// 실시간 RTLS 위치 추정
growSpaceRTLS.startUwbRtls(
anchors: anchors,
onResult: { location in
DispatchQueue.main.async {
// 위치 결과를 화면 격자에 표시
updateUserPositionOnGrid(CGPoint(x: location.x, y: location.y))
}
}
)
}
)
📱 테스트 앱 안내
본 SDK를 활용한 공식 테스트 앱이 아래 경로에 공개되어 있습니다. 실제 디바이스와 연동하여 UWB 거리 측정 및 RTLS 위치 추정 기능을 직접 체험할 수 있습니다.