跳到主要内容

蓝牙连接 (TSBleConnect)

蓝牙连接模块提供了完整的蓝牙设备搜索、连接、绑定和管理功能。支持设备扫描、连接状态跟踪、认证、数据准备等完整的连接生命周期管理。

前提条件

  • iOS 设备支持蓝牙 4.0 (BLE) 或更高版本
  • 应用已获得蓝牙权限(NSBluetoothPeripheralUsageDescription
  • 蓝牙已启用且处于可用状态
  • 用户 ID 已获取,用于设备绑定和连接

数据模型

TSBleConnectionState

属性名类型说明
eTSBleStateDisconnectedNSUInteger未连接(初始状态或任何失败/断开后)
eTSBleStateConnectingNSUInteger连接中(正在建立BLE物理连接)
eTSBleStateAuthenticatingNSUInteger认证中(正在执行绑定/登录认证)
eTSBleStatePreparingDataNSUInteger准备数据中(认证成功后正在获取设备信息)
eTSBleStateConnectedNSUInteger已连接且就绪(完全连接,可进行数据操作)

TSScanCompletionReason

属性名类型说明
eTSScanCompleteReasonTimeoutNSInteger扫描超时
eTSScanCompleteReasonBleNotReadyNSInteger蓝牙未准备好
eTSScanCompleteReasonPermissionDeniedNSInteger权限被拒绝
eTSScanCompleteReasonUserStoppedNSInteger用户主动停止
eTSScanCompleteReasonSystemErrorNSInteger系统错误
eTSScanCompleteReasonNotSupportNSInteger不支持

TSBleStatus

属性名类型说明
TSBleDisconnectedNSInteger未连接
TSBleConnectedNSInteger已连接(物理连接已建立)
TSBleReadyNSInteger已就绪(已连接且打开了Notify/SPP)

TSBluetoothInfo

属性名类型说明
macAddressNSString *蓝牙MAC地址(冒号分隔格式,如"DE:82:47:15:28:B0"),可能为nil
nameNSString *蓝牙名称,可能为nil
statusTSBleStatus蓝牙适配器连接状态

TSBluetoothSystem

属性名类型说明
bleInfoTSBluetoothInfo *BLE(低功耗蓝牙)信息
btInfoTSBluetoothInfo *BT(经典蓝牙)信息

TSPeripheralConnectParam

属性名类型说明
userIdNSString *设备连接的用户ID(必需)
userInfoTSUserInfoModel *设备连接的用户信息模型
authCodeNSString *设备绑定时通过扫描二维码获得的随机码
allowConnectWithBTBOOL标识是否允许蓝牙连接
brandNSString *手机品牌信息
modelNSString *手机型号信息
systemVersionNSString *手机系统版本

TSPeripheralScanParam

属性名类型说明
userIdNSString *设备连接的用户ID
serviceUUIDsNSArray<CBUUID *> *过滤外设的服务UUID数组,nil表示不过滤
solicitedServiceUUIDsNSArray<CBUUID *> *Solicited Service UUID过滤,nil表示不过滤
deviceNameNSString *设备名称过滤,nil表示不过滤
macAddressNSString *MAC地址过滤,nil表示不过滤
onlyUnconnectedBOOL是否只返回未连接的外设
allowDuplicatesBOOL是否允许重复发现同一设备
scanTimeoutNSInteger扫描超时时间(秒),0表示无超时

TSPeripheral

属性名类型说明
systemInfoTSPeripheralSystem *系统相关信息(蓝牙外设对象、MAC地址等)
screenInfoTSPeripheralScreen *屏幕相关信息(屏幕尺寸、形状等)
projectInfoTSPeripheralProject *项目相关信息(项目ID、固件版本等)
capabilityTSPeripheralCapability *设备能力信息
limitationTSPeripheralLimitations *设备功能限制

TSPeripheralSystem

属性名类型说明
peripheralCBPeripheral *蓝牙外设对象
centralCBCentralManager *蓝牙中心管理器
uuidNSString *外设UUID字符串(只读)
macNSString *设备MAC地址(冒号分隔标准格式)
bleNameNSString *设备蓝牙名称
RSSINSNumber *蓝牙信号强度
advertisementDataNSDictionary *广播数据

TSPeripheralProject

属性名类型说明
projectIdNSString *项目标识符
companyIdNSString *公司标识符(从制造商数据提取)
brandNSString *设备品牌
modelNSString *设备型号
firmVersionNSString *固件版本号
virtualVersionNSString *虚拟版本号
serialNumberNSString *设备序列号
mainProjNumNSString *主项目号
subProjNumNSString *子项目号

TSPeripheralScreen

属性名类型说明
shapeTSPeriphShape设备外形(圆形、正方形、竖屏、横屏等)
screenSizeCGSize设备屏幕尺寸(像素)
screenBorderRadiusCGFloat设备屏幕圆角半径(像素)
dialPreviewSizeCGSize表盘预览图尺寸(像素)
dialPreviewBorderRadiusCGFloat表盘预览图圆角半径(像素)
videoPreviewSizeCGSize视频预览流尺寸(像素)
videoPreviewBorderRadiusCGFloat视频预览流圆角半径(像素)

TSPeripheralCapability

属性名类型说明
featureAbilityTSFeatureAbility *功能模块能力(粗粒度能力标志)
messageAbilityTSMessageAbility *消息通知能力(细粒度消息类型支持)
dailyActivityAbilityTSDailyActivityAbility *每日活动能力(细粒度活动类型支持)
sleepAlgorithmNSInteger设备睡眠算法类型(0=最长夜间段,1=仅最长段)

TSFeatureAbility

属性名类型说明
originAbilityNSData *从设备获取的最原始能力数据
supportCapabilitiesTSPeripheralSupportAbility设备功能支持标志集
isSupportStepCountingBOOL是否支持计步功能
isSupportDistanceCountingBOOL是否支持距离计数功能
isSupportCalorieCountingBOOL是否支持卡路里计数功能
isSupportHeartRateBOOL是否支持心率监测功能
isSupportBloodPressureBOOL是否支持血压监测功能
isSupportBloodOxygenBOOL是否支持血氧监测功能
isSupportStressBOOL是否支持压力监测功能
isSupportSleepBOOL是否支持睡眠监测功能
isSupportTemperatureBOOL是否支持体温监测功能
isSupportECGBOOL是否支持心电图监测功能
isSupportFemaleHealthBOOL是否支持女性健康功能
isSupportInitiateWorkoutBOOL是否支持发起运动功能
isSupportWeightManagementBOOL是否支持体重管理功能
isSupportRemindersBOOL是否支持提醒功能
isSupportCallManagementBOOL是否支持来电管理功能
isSupportAppNotificationsBOOL是否支持应用通知功能
isSupportMusicControlBOOL是否支持音乐控制功能
isSupportWeatherDisplayBOOL是否支持天气显示功能
isSupportFindMyPhoneBOOL是否支持查找手机功能
isSupportAlarmClockBOOL是否支持闹钟功能
isSupportWorldClockBOOL是否支持世界时钟功能
isSupportMapNavigationBOOL是否支持地图导航功能
isSupportShakeCameraBOOL是否支持摇一摇拍照功能
isSupportCameraPreviewBOOL是否支持相机视频预览功能
isSupportEWalletBOOL是否支持电子钱包功能
isSupportBusinessCardBOOL是否支持电子名片功能
isSupportPhotoAlbumBOOL是否支持相册功能
isSupportEBookBOOL是否支持电子书功能
isSupportVoiceRecordingBOOL是否支持录音功能
isSupportAppStoreBOOL是否支持应用商店功能
isSupportMotionGamesBOOL是否支持体感游戏功能
isSupportSportUploadBOOL是否支持运动上传功能
isSupportERNIEBotBOOL是否支持文心一言功能
isSupportChatGPTBOOL是否支持ChatGPT
isSupportLoversFeatureBOOL是否支持情侣功能
isSupportContactsBOOL是否支持联系人功能
isSupportEmergencyContactsBOOL是否支持紧急联系人功能
isSupportMuslimPrayerBOOL是否支持穆斯林祈祷功能
isSupportQiblaCompassBOOL是否支持朝拜指南针功能
isSupportNFCPaymentBOOL是否支持NFC支付功能
isSupportVoiceAssistantBOOL是否支持语音助手功能
isSupportFacePushBOOL是否支持表盘推送功能
isSupportCustomFaceBOOL是否支持自定义表盘功能
isSupportSlideshowFaceBOOL是否支持幻灯片表盘功能
isSupportDialComponentBOOL是否支持表盘组件功能
isSupportTimeSettingsBOOL是否支持时间设置功能
isSupportLanguageBOOL是否支持语言设置功能
isSupportUserInfoSettingsBOOL是否支持用户信息设置功能
isSupportDailyActivityBOOL是否支持每日活动
isSupportFirmwareUpgradeBOOL是否支持固件升级功能
isSupportUnitSettingsBOOL是否支持单位设置功能
isSupportEarbudsAPIsBOOL是否支持EarbudsAPIs
isSupportAIChatBOOL是否支持AI聊天功能
isSupportAIChatAudioUsingScoBOOLAI聊天音频通道是否使用SCO
isSupportScreenLockBOOL是否支持屏幕锁功能
isSupportGameLockBOOL是否支持游戏锁功能

TSDailyActivityAbility

属性名类型说明
无公开属性-通过方法访问每日活动类型支持情况

TSMessageAbility

属性名类型说明
无公开属性-通过方法访问消息类型支持情况

TSPeripheralLimitations

属性名类型说明
maxAlarmCountUInt8设备支持的最大闹钟数量
maxContactCountUInt8设备支持的最大联系人数量
maxEmergencyContactCountUInt8设备支持的最大紧急联系人数量
maxPushDialCountUInt8设备支持的最大可推送表盘位置个数
maxInnerDialCountUInt8设备预装的表盘数量
maxWorldClockCountUInt8设备支持的最大世界时钟数量
maxSedentaryReminderCountUInt8设备支持的最大久坐提醒数量
maxWaterDrinkingReminderCountUInt8设备支持的最大喝水提醒数量
maxMedicationReminderCountUInt8设备支持的最大吃药提醒数量
maxCustomReminderCountUInt8设备支持的最大自定义提醒数量

枚举与常量

TSPeriphShape

说明
eTSPeriphShapeUnknow未知形状
eTSPeriphShapeCircle圆形设备
eTSPeriphShapeSquare正方形设备
eTSPeriphShapeVerticalRectangle纵向长方形设备
eTSPeriphShapeTransverseRectangle横向长方形设备

TSPeripheralSupportAbility

说明
TSPeripheralSupportNone不支持任何功能
TSPeripheralSupportStepCounting步数计数
TSPeripheralSupportDistanceCounting距离计数
TSPeripheralSupportCalorieCounting热量计数
TSPeripheralSupportHeartRate心率监测
TSPeripheralSupportBloodPressure血压监测
TSPeripheralSupportBloodOxygen血氧监测
TSPeripheralSupportStress压力监测
TSPeripheralSupportSleep睡眠监测
TSPeripheralSupportTemperature体温监测
TSPeripheralSupportECG心电图监测
TSPeripheralSupportFemaleHealth女性健康
TSPeripheralSupportInitiateWorkout发起运动功能
TSPeripheralSupportDailyActivity每日活动
TSPeripheralSupportWeightManagement体重管理
TSPeripheralSupportReminders活动提醒
TSPeripheralSupportCallManagement来电管理
TSPeripheralSupportAppNotifications应用通知
TSPeripheralSupportMusicControl音乐控制
TSPeripheralSupportWeatherDisplay天气显示
TSPeripheralSupportFindMyPhone寻找手机
TSPeripheralSupportAlarmClock闹钟功能
TSPeripheralSupportWorldClock世界时钟
TSPeripheralSupportMapNavigation地图导航
TSPeripheralSupportShakeCamera摇一摇拍照
TSPeripheralSupportCameraPreview相机视频预览
TSPeripheralSupportEWallet电子钱包
TSPeripheralSupportBusinessCard电子名片
TSPeripheralSupportPhotoAlbum相册功能
TSPeripheralSupportEBook电子书功能
TSPeripheralSupportVoiceRecording录音功能
TSPeripheralSupportAppStore应用商店
TSPeripheralSupportMotionGames体感游戏
TSPeripheralSupportSportUpload上传运动类型到设备
TSPeripheralSupportERNIEBot文心一言
TSPeripheralSupportChatGPTChatGPT
TSPeripheralSupportLoversFeature情侣功能
TSPeripheralSupportContacts联系人功能
TSPeripheralSupportEmergencyContacts紧急联系人
TSPeripheralSupportMuslimPrayer穆斯林祈祷提醒
TSPeripheralSupportQiblaCompass朝拜指南针
TSPeripheralSupportNFCPaymentNFC支付
TSPeripheralSupportVoiceAssistant语音助手
TSPeripheralSupportFacePush表盘功能
TSPeripheralSupportCustomFace自定义表盘
TSPeripheralSupportSlideshowFace幻灯片表盘
TSPeripheralSupportTimeSettings时间设置
TSPeripheralSupportLanguageSettings语言设置
TSPeripheralSupportUserInfoSettings用户信息设置
TSPeripheralSupportFirmwareUpgrade固件升级
TSPeripheralSupportUnitSettings单位设置
TSPeripheralSupportEarbudsAPIs支持耳机仓接口
TSPeripheralSupportDialComponent支持表盘组件化
TSPeripheralSupportAIChat支持AI聊天
TSPeripheralSupportAIChatAudioUsingScoAI聊天音频通道使用SCO
TSPeripheralSupportScreenLock屏幕锁
TSPeripheralSupportGameLock游戏锁

回调类型

回调类型参数说明
TSScanDiscoveryBlockTSPeripheral *peripheral发现新设备时触发,在主线程执行
TSScanCompletionBlockTSScanCompletionReason reason, NSError *error扫描完成时触发,包含完成原因与可选错误
TSBleConnectionStateCallbackTSBleConnectionState connectionState连接状态变化时触发,用于进度UI更新
TSBleConnectionCompletionBlockTSBleConnectionState connectionState, NSError *error连接完成时触发,包含最终状态与可选错误

接口方法

获取当前蓝牙连接状态

- (void)getConnectState:(TSBleConnectionStateCallback)completion;
参数类型说明
completionTSBleConnectionStateCallback返回当前连接状态的回调

获取蓝牙设备的当前连接状态。可从任何线程安全调用,回调始终在主线程执行。

id<TSBleConnectInterface> bleConnect = /* 获取接口实例 */;

[bleConnect getConnectState:^(TSBleConnectionState connectionState) {
switch (connectionState) {
case eTSBleStateDisconnected:
TSLog(@"设备未连接");
break;
case eTSBleStateConnecting:
TSLog(@"正在连接...");
break;
case eTSBleStateAuthenticating:
TSLog(@"正在认证...");
break;
case eTSBleStatePreparingData:
TSLog(@"正在准备数据...");
break;
case eTSBleStateConnected:
TSLog(@"设备已连接且就绪");
break;
}
}];

开始搜索蓝牙设备

- (void)startSearchPeripheral:(NSTimeInterval)timeout
discoverPeripheral:(TSScanDiscoveryBlock)discoverPeripheral
completion:(TSScanCompletionBlock)completion;
参数类型说明
timeoutNSTimeInterval扫描超时时间(秒),0表示使用默认超时时间(30秒)
discoverPeripheralTSScanDiscoveryBlock发现新设备时触发的回调
completionTSScanCompletionBlock扫描完成或超时时的回调

开始搜索蓝牙设备。搜索过程持续进行,直到超时、调用stopSearchPeripheral或连接成功。所有回调都在主线程执行。

id<TSBleConnectInterface> bleConnect = /* 获取接口实例 */;

[bleConnect startSearchPeripheral:30.0
discoverPeripheral:^(TSPeripheral *peripheral) {
TSLog(@"发现设备: %@", peripheral.systemInfo.bleName);
TSLog(@"MAC地址: %@", peripheral.systemInfo.mac);
TSLog(@"信号强度: %@", peripheral.systemInfo.RSSI);
} completion:^(TSScanCompletionReason reason, NSError *error) {
switch (reason) {
case eTSScanCompleteReasonTimeout:
TSLog(@"扫描超时");
break;
case eTSScanCompleteReasonUserStopped:
TSLog(@"用户停止扫描");
break;
case eTSScanCompleteReasonBleNotReady:
TSLog(@"蓝牙未准备好");
break;
case eTSScanCompleteReasonPermissionDenied:
TSLog(@"权限被拒绝");
break;
default:
if (error) {
TSLog(@"扫描出错: %@", error.localizedDescription);
}
break;
}
}];

使用高级参数开始搜索蓝牙设备

- (void)startSearchPeripheralWithParam:(TSPeripheralScanParam *)param
discoverPeripheral:(TSScanDiscoveryBlock)discoverPeripheral
completion:(TSScanCompletionBlock)completion;
参数类型说明
paramTSPeripheralScanParam *扫描参数,包含过滤条件(UUID、名称、MAC)、超时等
discoverPeripheralTSScanDiscoveryBlock发现新设备时触发的回调
completionTSScanCompletionBlock扫描完成回调,包含完成原因与可选错误

使用高级参数开始搜索蓝牙设备。支持按服务UUID、设备名称、MAC地址等条件过滤。

id<TSBleConnectInterface> bleConnect = /* 获取接口实例 */;

TSPeripheralScanParam *scanParam = [[TSPeripheralScanParam alloc] init];
scanParam.userId = @"user123";
scanParam.deviceName = @"MyDevice";
scanParam.scanTimeout = 30;
scanParam.allowDuplicates = YES;

[bleConnect startSearchPeripheralWithParam:scanParam
discoverPeripheral:^(TSPeripheral *peripheral) {
TSLog(@"发现设备: %@", peripheral.systemInfo.bleName);
} completion:^(TSScanCompletionReason reason, NSError *error) {
if (reason == eTSScanCompleteReasonTimeout) {
TSLog(@"扫描超时");
}
}];

停止搜索蓝牙设备

- (void)stopSearchPeripheral;

停止搜索蓝牙设备。即使未在扫描也可安全调用。应在连接成功后或退出搜索界面时调用。

id<TSBleConnectInterface> bleConnect = /* 获取接口实例 */;

[bleConnect stopSearchPeripheral];