upBleModule 蓝牙模块
模块概述
蓝牙模块为H5页面提供扫码蓝牙4.0设备,连接蓝牙4.0设备,蓝牙4.0设备数据传输等蓝牙能力。 在使用蓝牙插件时,请确保优先调用initManager接口,否则可能会导致部分功能无法正常工作。 在调用和蓝牙设备通讯的相关接口时,请确保设备蓝牙功能已经开启,且和手机已经连接。 在使用相关接口时,请确认蓝牙设备支持对应的功能,否则接口会无结果返回。
适用前提
- 蓝牙设备:必须要支持蓝牙 4.0。
- iOS:硬件至少是 iphone4s,系统至少是 iOS6。
- android:系统版本至少是 android4.3。
蓝牙通讯原理概述
在蓝牙通讯中有两个主要的部分,Central 和 Peripheral,有一点类似Client Server。Peripheral 作为周边设备是服务器。Central 作为中心设备是客户端。所有可用的蓝牙设备可以作为周边(Peripheral)也可以作为中央(Central),但不可以同时既是周边也是中央。
一般手机是客户端, 设备(比如手环)是服务器,因为是手机去连接手环这个服务器。周边(Peripheral)是生成或者保存了数据的设备,中央(Central)是使用这些数据的设备。你可以认为周边是一个广播数据的设备,他广播到外部世界说他这儿有数据,并且也说明了能提供的服务。另一边,中央开始扫描附近有没有服务,如果中央发现了想要的服务,然后中央就会请求连接周边,一旦连接建立成功,两个设备之间就开始交换传输数据了。
除了中央和周边,我们还要考虑他俩交换的数据结构。这些数据在服务中被结构化,每个服务由不同的特征(Characteristics)组成,特征是包含一个单一逻辑值的属性类型。
服务、特性和描述符
- 特征是与外界交互的最小单位。蓝牙4.0设备通过服务(Service)、特征(Characteristics)和描述符(Descriptor)来形容自己,同一台设备可能包含一个或多个服务,每个服务下面又包含若干个特征,每个特征下面有包含若干个描述符(Descriptor)。比如某台蓝牙4.0设备,用特征A来描述设备信息、用特征B和描述符b来收发数据等。而每个服务、特征和描述符都是用 UUID 来区分和标识的。
UUID
- UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。 UUID的标准型式包含32个16进制数字,以连字号分为五段,示例: 550e8400-e29b-41d4-a716-446655440000
方法列表
- initManager (蓝牙初始化)
- scan (搜索蓝牙4.0设备)
- isScanning (判断是否正在扫描)
- stopScan (停止搜索附近的蓝牙设备)
- connect (连接指定外围设备)
- disconnect (断开与指定外围设备的连接)
- isConnected (判断与指定外围设备是否为连接状态)
- getPeripherals (获取当前扫描到的所有外围设备信息)
- getPeripheralServicesByUuid (根据指定的外围设备 UUID 获取该外围设备的所有服务)
- getPeripheralCharacteristicsByUuids (根据指定的外围设备 UUID 及其服务 UUID 获取该外围设备的所有特征)
- setNotify (根据指定的外围设备 UUID 及其服务 UUID 和特征 UUID 监听数据回发)
- stopNotify (停止监听数据回发)
- setPeripheralValueByUuids (根据指定的外围设备 UUID 及其服务 UUID 和特征 UUID 发送数据)
- clean (清空已搜索到的记录在本地的外围设备信息)
- addStateListener(监听手机蓝牙开关状态)
- removeStateListener(取消监听手机蓝牙开关状态)
- addScanningDeviceListListener(订阅扫描到附件蓝牙设备列表(此方法为单一监听,重复调用,会覆盖之前注册的方法))
- removeScanningDeviceListListener(取消订阅扫描到附件蓝牙设备列表)
- getCharacteristicsValue(根据指定的外围设备 UUID 及其服务 UUID 和特征 UUID 查询特征值)
特征值操作相关方法使用注意事项
getCharacteristicsValue、setPeripheralValueByUuids、setNotify接口使用注意事项
- 在对特征值进行相关操作时(读取、写入、监听),请确保传入的设备特征支持该功能;否则接口会出现错误回调或无回调返回的情况;
- 在对特征值进行相关操作时(读取、写入、监听)时,请确保已经依次调用了connect、getPeripheralServicesByUuid、getPeripheralCharacteristicsByUuids 接口,且确保前一个接口回调成功后在调用下一个接口;
- 受手机、设备等相关因素影响,请在上述接口调用成功后及时对特征值进行相关操作时(读取、写入、监听),否则接口会出现错误回调或无回调返回的情况;
- 在确认设备已经连接手机,接口参数正确的前提下,如果接口出现无回调或者回调错误的情况下,请进行重试(完整流程重试,非单一接口);
公共数据
- 特征信息模型 characteristicModel
{ "uuid": "", "serviceUUID": "", "permissions": "", "properties": "" }
属性名 | 数据类型 | 说明 |
---|---|---|
uuid | String | 特征的UUID |
serviceUUID | String | 服务的UUID |
permissions | String | 特征的权限,取值范围:readable/writeable/readEncryptionRequired /writeEncryptionRequired/unknow |
properties | String | 特征的属性,取值范围:broadcast/read/writeWithoutResponse/write /notify/indicate/authenticatedSignedWrites/extendedProperties/notifyEncryptionRequired/indicateEncryptionRequired/unknow |
PS:permissions和properties默认属性unknow(当系统返回数据不在枚举范围内时,返回unknow)
- 回传信息模型 callBackModel
{ "uuid": "", "serviceUUID": "", "permissions": "", "properties": "", "value": "" }
属性名 | 数据类型 | 说明 |
---|---|---|
uuid | String | 特征的UUID |
serviceUUID | String | 服务的UUID |
permissions | String | 特征的权限,取值范围:readable/writeable/readEncryptionRequired /writeEncryptionRequired/unknow |
properties | String | 特征的属性,取值范围:broadcast/read/writeWithoutResponse/write /notify/indicate/authenticatedSignedWrites/extendedProperties/notifyEncryptionRequired/indicateEncryptionRequired/unknow |
value | String | 特征的值 |
PS:permissions和properties默认属性unknow(当系统返回数据不在枚举范围内时,返回unknow)
- 接口返回的数据均以JSON结构返回,由代码,信息和数据三部分组成
{ "retCode": "000000", //接口状态标识码,蓝牙模块错误标识码以22开头 "retInfo": "操作成功",//接口信息说明 "retData": null //业务数据 }
具体定义:返回数据通用
模块变更记录
V3.0.0
封装蓝牙模块接口返回数据
V3.2.0
重构蓝牙模块接口,统一返回数据 增加addStateListener、removeStateListener、addScanningDeviceListListener、removeScanningDeviceListListener接口
V4.0.0
重构蓝牙模块接口
方法说明
initManager (蓝牙初始化)
initManager()
说明
- 在使用蓝牙插件时,请确保优先调用本接口,否则可能会导致部分功能无法正常工作。
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
220000 | 蓝牙初始化失败 |
220001 | 蓝牙未开启 |
220002 | 蓝牙未授权 |
220003 | 设备不支持蓝牙 |
220004 | 正在重置状态 |
示例
调用方式
uplusapi.upBleModule.initManager().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数initManagerAction成功",
"retData": undefined
}
scan (搜索蓝牙4.0设备)
scan()
说明
- 搜索蓝牙4.0设备,可通过 getPeripherals 接口来获取扫描到的设备信息。若要停止、清空扫描则调用 stopScan 接口
- 在android端,如未调用initManager申请权限,则系统不会返回蓝牙设备扫描数据;
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
clean | boolean | 否 | 扫描前是否需要清除本地缓存的蓝牙设备数据 |
serviceUUIDs | Array | 否 | 要扫描的蓝牙4.0设备的服务(service)的UUID(字符串)组成的数组,若不传则扫描附近的所有支持蓝牙4.0的设备 |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220005| 搜索蓝牙4.0设备失败 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 |
示例
调用方式
uplusapi.upBleModule.scan().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数scanBleAction成功",
"retData": undefined
}
getPeripherals (获取当前扫描到的所有外围设备信息)
getPeripherals()
说明
- 搜索蓝牙4.0设备成功后,调用该接口才能获取扫描到的设备信息。
- 在iOS端调用搜索蓝牙4.0设备后,不能立即调用此接口,请做一定的延时处理,否则将返回空数组。
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
manufacturerData | String | 蓝牙广播的数据 |
uuid | String | 扫描到的蓝牙设备的 UUID |
name | String | 扫描到的蓝牙设备的名字 |
rssi | Number | 扫描到的蓝牙设备的信号强度,ios无此字段 |
示例
调用方式
uplusapi.upBleModule.getPeripherals().then((peripherals) => {
console.log(peripherals)
});
返回结果
{
"retCode": "000000",
"retInfo": "调用函数getPeripheral()成功",
"retData": [{
"manufacturerData": "060001092002c125d2f9b4c4f366dee51e909099c8b3d1754d484d5296",
"uuid": "74F0CC89-3F83-4E08-9F67-53A85F1F6DAD",
"name": "",
"rssi": 127
}]
}
isScanning (判断是否正在扫描)
isScanning()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
status | Boolean | 是否正在扫描 |
示例
调用方式
uplusapi.upBleModule.isScanning().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数isScanningAction成功",
"retData": {
"status": true
}
}
stopScan (停止搜索附近的蓝牙设备)
stopScan()
说明
- 停止搜索附近的蓝牙设备
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上确认 |
params 输入参数:
无
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 |
正确返回 retData说明:
无
示例
调用方式
uplusapi.upBleModule.stopScan().then((ret) => console.log(ret));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数stopScanAction成功",
"retData": undefined
}
connect (连接指定外围设备)
connect()
适用性
iOS调用connect之前,需要先调用getPeripherals获取设备列表
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 要连接的外围设备的 UUID |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220015| 未知错误 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |220007|uuid为空| |220008|未搜索到该蓝牙设备| |220009|该设备为已连接状态|
示例
调用方式
uplusapi.upBleModule.connect({
peripheralUUID: ''
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数connectAction成功",
"retData": undefined
}
disconnect (断开与指定外围设备的连接)
disconnect()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 要断开连接的外围设备的 UUID |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220011| 断开与指定外围设备的连接失败 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |220007|uuid为空| |220008|未搜索到该蓝牙设备| |220011| 断开与指定外围设备的连接失败 |
示例
调用方式
uplusapi.upBleModule.disconnect({
"peripheralUUID": ""
}).then((result) =>console.log('result',result));
获取成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数disconnectAction成功",
"retData": undefined
}
isConnected (判断与指定外围设备是否为连接状态接)
isConnected()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 要判断连接的外围设备的 UUID |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |220007|uuid为空| |220008|未搜索到该蓝牙设备|
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
status | Boolean | 是否连接 |
示例
调用方式
uplusapi.upBleModule.isConnected({
"peripheralUUID": ""
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数isConnectedAction成功",
"retData": {
"status": true
}
}
getPeripheralServicesByUuid (根据指定的外围设备UUID获取该外围设备的所有服务)
getPeripheralServicesByUuid()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 指定的蓝牙外围设备的 UUID |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220016| 根据指定的外围设备UUID获取该外围设备的所有服务失败 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |2200013|peripheralUUID为空| |220008|未搜索到该蓝牙设备| |220016| 根据指定的外围设备UUID获取该外围设备的所有服务失败 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
services | Array | 获取到的所有服务UUID集合 |
示例
调用方式
uplusapi.upBleModule.getPeripheralServicesByUuid({
"peripheralUUID": ""
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数discoverServiceAction成功",
"retData": {
"services": ["00002a00-0000-1000-8000-00805f9b34fb"]
}
}
getPeripheralCharacteristicsByUuids (根据指定的外围设备 UUID 及其服务 UUID 获取该外围设备的所有特征)
getPeripheralCharacteristicsByUuids()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 是 | 是 |
APP版本 | / | 5.3.0 及以上 | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
serviceUUID | String | 是 | 指定的服务的 UUID |
peripheralUUID | String | 是 | 指定的蓝牙外围设备的 UUID |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220017| serviceUUID为空 | |220018| 未找到指定服务 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |2200013|peripheralUUID为空| |220008|未搜索到该蓝牙设备| |220017|serviceUUID为空| |220018|未找到指定服务| |220019| 根据指定的外围设备UUID及其服务UUID获取该外围设备的所有特征失败|
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
characteristics | Array | 获取的所有特征信息的集合,数组元素结构参照特征信息模型characteristicModel |
示例
调用方式
uplusapi.upBleModule.getPeripheralCharacteristicsByUuids({
"serviceUUID": "",
"peripheralUUID": ""
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数discoverCharacteristicsAction成功",
"retData": [{
"uuid": "",
"serviceUUID": "",
"permissions": "",
"properties": ""
}]
}
setNotify (根据指定的外围设备 UUID 及其服务 UUID 和特征 UUID 监听数据回发)
setNotify()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 指定的蓝牙外围设备的 UUID |
serviceUUID | String | 是 | 指定的服务的 UUID |
characteristicUUID | String | 是 | 指定的特征的 UUID |
notifyCallback | any | 是 | 监听的回调方法 |
正确返回 retData说明:
成功回调参数的retData结构参照回传信息模型callBackModel。
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220015| 未知错误 | |220017| serviceUUID为空 | |220018| 未找到指定服务 | |220020| characteristicUUID 为空 | |220022| 未找到指定特征 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |2200013|peripheralUUID为空| |220008|未搜索到该蓝牙设备| |220017|serviceUUID为空| |220018|未找到指定服务| |220020| characteristicUUID为空| |220022| 未找到指定特征| |220015| 未知错误|
示例
调用方式
uplusapi.upBleModule.setNotify({
"peripheralUUID": "",
"serviceUUID": "",
"characteristicUUID": "",
notifyCallback
}).then((ret) => console.log(ret));
function notifyCallback(ret) {
alert(JSON.stringify(ret));
console.log(ret);
}
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数setNotifyAction成功",
"retData": {
"uuid": "",
"serviceUUID": "",
"permissions": "",
"properties": "",
"value": ""
}
}
stopNotify (停止监听数据回发)
stopNotify()
说明
- 调用setNotify接口后开始监听数据,不需要继续监听时,调用disconnect断开链接,在iOS 平台上还需要调用此接口来停止监听。
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 |
正确返回 retData说明:
无
示例
调用方式
uplusapi.upBleModule.stopNotify().then((ret) => console.log(ret));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数stopNotifyAction成功",
"retData": undefind
}
setPeripheralValueByUuids (根据指定的外围设备UUID及其服务UUID和特征UUID写数据)
setPeripheralValueByUuids()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 指定的蓝牙外围设备的 UUID |
serviceUUID | String | 是 | 指定的服务的 UUID |
characteristicUUID | String | 是 | 指定的特征的 UUID |
value | String | 是 | 要写入的数据 ,十六进制的字符串 |
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220015| 未知错误 | |220017| serviceUUID为空 | |220018| 未找到指定服务 | |220020| characteristicUUID 为空 | |220021| value 为空 | |220022| 未找到指定特征 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |2200013|peripheralUUID为空| |220008|未搜索到该蓝牙设备| |220017|serviceUUID为空| |220018|未找到指定服务| |220020| characteristicUUID为空| |220021| value为空| |220022| 未找到指定特征 | |220023| 根据指定的外围设备UUID及其服务UUID和特征UUID发送数据失败 |
正确返回 retData说明:
成功回调参数的retData结构参照回传信息模型callBackModel。
示例
调用方式
uplusapi.upBleModule.setPeripheralValueByUuids({
"peripheralUUID": "",
"serviceUUID": "",
"characteristicUUID": "",
"value": ""
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数writeValueForCharacteristicAction成功",
"retData": {
"permissions": "0",
"properties": "10",
"serviceUUID": "00001800-0000-1000-8000-00805f9b34fb",
"uuid": "00002a00-0000-1000-8000-00805f9b34fb",
"value": ""
}
}
clean (清空已搜索到的记录在本地的外围设备信息)
clean()
说明
- 建议在没有连接的情况下调用,否则与外围设备相关的一系列接口均会失效
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
正确返回 retData说明:
无
示例
调用方式
uplusapi.upBleModule.clean().then((ret) => console.log(ret));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数cleanAction成功",
"retData": undefind
}
addStateListener (监听手机蓝牙开关状态)
addStateListener()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
函数 | Function | 是 | 订阅事件触发的回调函数,具体返回值参见下方返回值说明 |
key | String | 否 | 当前注册的回调函数标识,注:如果重复使用同一Key值去注册回调函数,则最后使用同一Key值注册的回调函数会覆盖之前注册的回调函数 |
错误返回 retCode说明:
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) |
使用通用retCode
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
res | String | available:蓝牙处于可用状态; unavailable:蓝牙处于不可用状态(关闭); resetting:蓝牙重置中 |
示例
调用方式
uplusapi.upBleModule.addStateListener((res) => {
console.log('手机蓝牙状态变化了:',res);
},'itsFirst');
成功返回结果
{
"retData": undefind,
"retCode": "000000",
"retInfo": "调用函数attachBleStatusListenerAction成功"
}
removeStateListener (取消监听手机蓝牙开关状态)
removeStateListener()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
key | String | 否 | 调用监听手机蓝牙开关状态时,已注册的回调函数标识 |
错误返回 retCode说明:
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) |
使用通用retCode
正确返回 retData说明:
采用标准回调数据结构
示例
调用方式
uplusapi.upBleModule.removeStateListener('itsFirst').then(res => console.log(res)).catch(err => console.log(err));
成功返回结果
{
"retData": undefind,
"retCode": "000000",
"retInfo": "调用函数detchBluetoothStatusListenerAction成功"
}
addScanningDeviceListListener (订阅扫描到附件蓝牙设备列表(此方法为单一监听,重复调用,会覆盖之前注册的方法))
addScanningDeviceListListener()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
函数 | Function | 是 | 订阅事件触发的回调函数,具体返回值参见下方返回值说明 |
错误返回 retCode说明:
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) |
使用通用retCode
正确返回 retData说明:
无
监听返回数据说明:
数据类型 | 说明 |
---|---|
Array | 实时搜索到附件蓝牙设备列表数组,数组中每个元素为object对象 |
Array中元素为object,元素对象说明
属性名 | 数据类型 | 说明 |
---|---|---|
manufacturerData | String | 蓝牙广播的数据 |
uuid | String | 扫描到的蓝牙设备的 UUID |
name | String | 扫描到的蓝牙设备的名字 |
rssi | Number | 扫描到的蓝牙设备的信号强度,ios无此字段 |
示例
调用方式
uplusapi.upBleModule.addScanningDeviceListListener((peripherals) => {
console.log('实时搜索的蓝牙设备列表',peripherals);
});
监听返回结果
[{
"manufacturerData": "060001092002c125d2f9b4c4f366dee51e909099c8b3d1754d484d5296",
"uuid": "74F0CC89-3F83-4E08-9F67-53A85F1F6DAD",
"name": "",
"rssi": 127
}]
removeScanningDeviceListListener (取消订阅扫描到附件蓝牙设备列表)
removeScanningDeviceListListener()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
iOS: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) |
使用通用retCode
正确返回 retData说明:
采用标准回调数据结构
示例
调用方式
uplusapi.upBleModule.removeScanningDeviceListListener().then(res => console.log(res)).catch(err => console.log(err));
成功返回结果
{
"retData": undefind,
"retCode": "000000",
"retInfo": "调用函数detchBleDeviceListChangedListenerAction成功"
}
getCharacteristicsValue (根据指定的外围设备 UUID 及其服务 UUID 和特征 UUID 查询特征值)
getCharacteristicsValue()
说明
- 只有调用该接口后,会触发接口回调。如果需要持续触发回调,请自行添加定时逻辑,每隔一定时间调用一次该接口。
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.17.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
peripheralUUID | String | 是 | 指定的蓝牙外围设备的 UUID |
serviceUUID | String | 是 | 指定的服务的 UUID |
characteristicUUID | String | 是 | 指定的特征的 UUID |
正确返回 retData说明:
成功回调参数的retData结构参照回传信息模型callBackModel。
错误返回 retCode说明:
Android: |retCode编码 | retInfo说明 | | --- | --- | |000001| 参数无效(入参json字符串) | |220001| 蓝牙未开启 | |220003| 设备不支持蓝牙 | |220008| 未搜索到该蓝牙设备 | |220015| 未知错误 | |220017| serviceUUID为空 | |220018| 未找到指定服务 | |220020| characteristicUUID 为空 | |220022| 未找到指定特征 |
iOS: |retCode编码 | retInfo说明 | | --- | --- | |220000| 蓝牙初始化失败 | |220001| 蓝牙未开启 | |220002| 蓝牙未授权 | |220003| 设备不支持蓝牙 | |220004| 正在重置状态 | |2200013|peripheralUUID为空| |220008|未搜索到该蓝牙设备| |220017|serviceUUID为空| |220018|未找到指定服务| |220020| characteristicUUID为空| |220022| 未找到指定特征 | |220015| 未知错误 |
示例
调用方式
uplusapi.upBleModule.getCharacteristicsValue({
"peripheralUUID": "",
"serviceUUID": "",
"characteristicUUID": ""
}).then((ret) => console.log(ret));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用函数getCharacteristicsValueAction成功",
"retData": {
"uuid": "",
"serviceUUID": "",
"permissions": "",
"properties": "",
"value": ""
}
}