iOS Requirements and SDK Setup
SDK Version: 1.0.0
Platform: iOS
Requirements
- iOS 17 or later.
- Swift tools 5.9 or later.
- Xcode 15 or later; use the current stable Xcode where possible.
- Validate BLE behavior on a physical Bluetooth-capable device.
Obtain and add the products
This documentation package does not contain SDK source or binaries. Obtain the official Swift package through the customer delivery channel agreed with xTalk and verify it against the delivered version/checksum manifest.
SDK 1.0.0 provides:
XTalkMeshSdkLowLatencyPttXTalkBleSdkXTalkDeviceAuthSdkXTalkFileTransferSdkXTalkOtaSdk
In Xcode, choose File → Add Package Dependencies and use the delivery method supplied to you:
- Local delivery: select the extracted package root.
- Customer-specific Git delivery: use the URL supplied by xTalk and exact version
1.0.0.
This documentation does not invent a public Git URL. Confirm that each product is linked to the App target under General → Frameworks, Libraries, and Embedded Content or the target dependency settings. Add only the products the target uses.
If the customer owns a Package.swift, use the location and identity in the delivery manifest and declare these products on the target:
.product(name: "XTalkMeshSdk", package: "XTalkMeshSdk"),
.product(name: "LowLatencyPtt", package: "LowLatencyPtt"),
.product(name: "XTalkBleSdk", package: "XTalkBleSdk"),
.product(name: "XTalkDeviceAuthSdk", package: "XTalkDeviceAuthSdk"),
.product(name: "XTalkFileTransferSdk", package: "XTalkFileTransferSdk"),
.product(name: "XTalkOtaSdk", package: "XTalkOtaSdk")
The package identity can vary with the delivered directory or URL. The product names are fixed.
Permissions
Add a customer-facing Bluetooth usage description to the app's Info.plist:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Bluetooth is used to discover and communicate with xTalk devices.</string>
If the customer's deployment policy still covers older OS behavior, also provide NSBluetoothPeripheralUsageDescription. The text must match the customer application's actual use.
The SDK does not own the customer's permission education UI. Explain Bluetooth use before the first scan. When .permissionDenied occurs, direct the user to Settings instead of repeatedly requesting access.
Imports
import XTalkMeshSdk
import LowLatencyPtt
import XTalkBleSdk
import XTalkDeviceAuthSdk
import XTalkFileTransferSdk
import XTalkOtaSdk
Select the products required by the application. Mesh, Low Latency PTT, file transfer, and OTA cooperate with transports or BLE sessions through the contracts in their guides. A UART or custom-transport customer that only uses authentication does not need to import BLE.
Minimum compile check
import XTalkBleSdk
import XTalkDeviceAuthSdk
@MainActor
func makeSdkObjects(transport: any DeviceAuthTransport) {
let ble = XTalkBleClient()
let authenticator = XTalkDeviceAuthenticator(transport: transport)
_ = ble.connectionState
_ = authenticator.state
}
If a module cannot be imported, verify that the product was added to the correct App target, not only to the project. If a device build finds no peripherals, verify permission, Bluetooth power, and device advertising. A simulator is not a substitute for BLE device acceptance testing.
Release build checklist
- The customer App deployment target is iOS 17 or newer.
- Release configuration links every product the application uses; dependencies must not be Debug-only.
- The final archive contains the Bluetooth usage description.
- Swift concurrency warnings are resolved: SDK objects and transports are used on MainActor.
- A physical device passes scan, connect,
atReady, authentication, disconnect, and reconnect tests.