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": ""
     }
}

results matching ""

    No results matching ""