敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20241118.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
♦ 要求 iPhone 4s / iOS6.0 以上,Android 4.3 以上;
♦ 需硬件支持 蓝牙 4.0,即 BLE(BluetoothLowEnergy);
jsBridge.ble.getState(function(state) { alert(state); }); /** state 整数类型 1: poweredOn 设备开启状态 -- 可用状态 2: poweredOff 设备关闭状态 3: resetting 正在重置状态 4: unauthorized 设备未授权状态 5: unknown 初始的时候是未知的 6: unsupported 设备不支持 **/
//请在调用其他接口之前请求蓝牙权限 //获得权限之后再调用业务接口,否则可能出现闪退现象 jsBridge.ble.requestPermission(function(granted) { alert(granted ? "已授权" : "未授权"); });
//当蓝牙功能停用时,请求启用蓝牙 jsBridge.ble.requestEnable(function(succ) { if (!succ) { alert("失败"); } });
//需预先开启蓝牙功能,不然获取不到。 jsBridge.ble.getBondedDevices(function(data) { showData(data); });
jsBridge.ble.getName(function(name) { alert(name); });
waiting(); jsBridge.ble.getPeripheral(function(data) { showData(data); }); /** data 为 json 数组 [ { uuid: "", //字符串,设备 uuid(MAC 地址) name: "", //字符串,设备名称 rssi: -50 //数字,信号强度 }, ... ] **/
jsBridge.ble.isScanning(function(yes) { alert(yes); }); /** yes 布尔类型,是否正在扫描中 **/
uuid:
jsBridge.ble.isConnected({ uuid: "{{isConnected.mac}}" //必须,字符串类型,目标设备的 uuid(MAC 地址) }, function(yes) { alert(yes); }); /** yes 布尔类型,是否已连接 **/
• 系统会不断的扫描更新附近的蓝牙4.0设备信息,反复通过回调函数通知您,也可以调用 getPeripheral 接口获取搜索到的设备;
• 调用此接口会先清空已经搜索到的设备;
• 最长连续扫描30秒钟会自动停止,调用 stopScan 手动停止扫描;
• 搜索到需要的设备后应尽快停止扫描,以降低电量消耗;
waiting(); jsBridge.ble.scan(function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 数组 [ { uuid: "", //字符串,设备 uuid(MAC 地址) name: "", //字符串,设备名称 rssi: -50 //数字,信号强度 }, ... ] **/
jsBridge.ble.stopScan(function(yes) { alert(yes); }); /** yes 布尔类型,是否已停止 **/
uuid:
jsBridge.ble.connect({ uuid: "{{connect.mac}}" //必须,字符串,目标设备的 uuid(MAC 地址) }, function(succ, err) { if (succ) { alert("连接成功"); } else { alert(err); } });
uuid:
jsBridge.ble.disconnect({ uuid: "{{disconnect.mac}}" //必须,字符串,目标设备的 uuid(MAC 地址) }, function(succ, err) { if (succ) { alert("断开成功"); } else { alert(err); } });
uuid:
mtu:
jsBridge.ble.requestMtu({ //已连接设备的 mac 地址 uuid: "{{requestMtu.mac}}", //长度(字节) mtu: {{requestMtu.mtu}} }, function(succ, res) { alert((succ ? "成功" : "失败") + "\n" + JSON.stringify(res)); });
uuid:
waiting(); jsBridge.ble.discoverServices({ //必须,字符串,设备的 uuid(MAC 地址) uuid: "{{discoverServices.mac}}" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 字符串数组类型,返回此设备所有服务的 UUID (serviceUUID) 集 [ "", //字符串,服务 UUID (serviceUUID) ... ] **/
uuid:
serviceUUID:
waiting(); jsBridge.ble.discoverCharacteristics({ //必须,字符串,设备的 uuid(MAC 地址) uuid : "{{discoverCharacteristics.mac}}", //必须,字符串,服务 uuid,调用 discoverServices 可获取 serviceUUID: "{{discoverCharacteristics.service}}" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 数组类型,返回所有特征集 [ { uuid : '', //字符串,设备 uuid(MAC 地址) serviceUUID : '', //字符串,服务的 UUID characteristicUUID: '', //字符串,特征的 UUID permissions : '', //字符串,特征的权限,可能值: //readable //writeable //readEncryptionRequired //writeEncryptionRequired //其他(数字代码串) properties : '', //字符串,特征的属性,可能值: //broadcast //read //writeWithoutResponse //write //notify //indicate //authenticatedSignedWrites //extendedProperties //notifyEncryptionRequired //indicateEncryptionRequired //其他(数字代码串) value : '' //字符串,Hex 16进制值字符串(请自行转换为 byte 流) }, ... ] **/
uuid:
serviceUUID:
characteristicUUID:
waiting(); jsBridge.ble.discoverDescriptors({ //必须,字符串,设备的 uuid(MAC 地址) uuid : "{{discoverDescriptors.mac}}", //必须,字符串,服务 uuid,调用 discoverServices 可获取 serviceUUID: "{{discoverDescriptors.service}}", //必须,字符串,特征 uuid,调用 discoverCharacteristics 可获取 characteristicUUID: "{{discoverDescriptors.characteristic}}" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 数组类型,返回所有描述符集 [ { uuid : '', //字符串,设备 uuid(MAC 地址) serviceUUID : '', //字符串,服务的 UUID characteristicUUID: '', //字符串,特征的 UUID descriptorUUID : '', //字符串,特征的 UUID value : '', //字符串,Hex 16进制值字符串(请自行转换为 byte 流) }, ... ] **/
• 每有数据回发都会触发回调函数;
• 调用 disconnect 断开连接则自动停止监听;
uuid:
serviceUUID:
characteristicUUID:
waiting(); jsBridge.ble.setNotify({ //必须,字符串,设备的 uuid(MAC 地址) uuid : "{{setNotify.mac}}", //必须,字符串,服务 uuid,调用 discoverServices 可获取 serviceUUID: "{{setNotify.service}}", //必须,字符串,特征 uuid,调用 discoverCharacteristics 可获取 characteristicUUID: "{{setNotify.characteristic}}" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 对象,请参考 discoverCharacteristics 返回的 data 类型说明 **/
• 每有数据回发都会触发回调函数;
uuid:
serviceUUID:
characteristicUUID:
waiting(); jsBridge.ble.read({ //必须,字符串,设备的 uuid(MAC 地址) uuid : "{{read.mac}}", //必须,字符串,服务 uuid,调用 discoverServices 可获取 serviceUUID: "{{read.service}}", //必须,字符串,特征 uuid,调用 discoverCharacteristics 可获取 characteristicUUID: "{{read.characteristic}}", //可选,字符串,可指定描述符 uuid,如果提供了则读取 descriptor,否则读取 characteristic descriptorUUID : "" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 对象: 读取 characteristic 请参考 discoverCharacteristics 返回的 data 类型说明 读取 descriptor 请参考 discoverDescriptors 返回的 data 类型说明 **/
• 每有数据回发都会触发回调函数;
uuid:
serviceUUID:
characteristicUUID:
waiting(); jsBridge.ble.write({ //必须,字符串,设备的 uuid(MAC 地址) uuid : "{{write.mac}}", //必须,字符串,服务 uuid,调用 discoverServices 可获取 serviceUUID: "{{write.service}}", //必须,字符串,特征 uuid,调用 discoverCharacteristics 可获取 characteristicUUID: "{{write.characteristic}}", //可选,字符串,可指定描述符 uuid,如果提供了则写入 descriptor,否则写入 characteristic descriptorUUID : "", //必须,请将需要写入的 byte 流转换为 Hex 16进制串 value : "48656C6C6F20776F726C64" }, function(succ, data) { showData({ succ: succ, data: data }); }); /** data 为 json 对象: 写入 characteristic 请参考 discoverCharacteristics 返回的 data 类型说明 写入 descriptor 请参考 discoverDescriptors 返回的 data 类型说明 **/
Sample Services 0000180d-0000-1000-8000-00805f9b34fb Heart Rate Service 0000180a-0000-1000-8000-00805f9b34fb Device Information Service Sample Characteristics 00002a37-0000-1000-8000-00805f9b34fb Heart Rate Measurement 00002a29-0000-1000-8000-00805f9b34fb Manufacturer Name String GATT Services 00001800-0000-1000-8000-00805f9b34fb GenericAccess 00001801-0000-1000-8000-00805f9b34fb GenericAttribute GATT Declarations 00002800-0000-1000-8000-00805f9b34fb Primary Service 00002801-0000-1000-8000-00805f9b34fb Secondary Service 00002802-0000-1000-8000-00805f9b34fb Include 00002803-0000-1000-8000-00805f9b34fb Characteristic GATT Descriptors 00002900-0000-1000-8000-00805f9b34fb Characteristic Extended Properties 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration 00002903-0000-1000-8000-00805f9b34fb Server Characteristic Configuration 00002904-0000-1000-8000-00805f9b34fb Characteristic Presentation Format 00002905-0000-1000-8000-00805f9b34fb Characteristic Aggregate Format 00002906-0000-1000-8000-00805f9b34fb Valid Range 00002907-0000-1000-8000-00805f9b34fb External Report Reference Descriptor 00002908-0000-1000-8000-00805f9b34fb Report Reference Descriptor GATT Characteristics 00002a00-0000-1000-8000-00805f9b34fb Device Name 00002a01-0000-1000-8000-00805f9b34fb Appearance 00002a02-0000-1000-8000-00805f9b34fb Peripheral Privacy Flag 00002a03-0000-1000-8000-00805f9b34fb Reconnection Address 00002a04-0000-1000-8000-00805f9b34fb PPCP 00002a05-0000-1000-8000-00805f9b34fb Service Changed GATT Service UUIDs 00001802-0000-1000-8000-00805f9b34fb Immediate Alert 00001803-0000-1000-8000-00805f9b34fb Link Loss 00001804-0000-1000-8000-00805f9b34fb Tx Power 00001805-0000-1000-8000-00805f9b34fb Current Time Service 00001806-0000-1000-8000-00805f9b34fb Reference Time Update Service 00001807-0000-1000-8000-00805f9b34fb Next DST Change Service 00001808-0000-1000-8000-00805f9b34fb Glucose 00001809-0000-1000-8000-00805f9b34fb Health Thermometer 0000180a-0000-1000-8000-00805f9b34fb Device Information 0000180b-0000-1000-8000-00805f9b34fb Network Availability 0000180d-0000-1000-8000-00805f9b34fb Heart Rate 0000180e-0000-1000-8000-00805f9b34fb Phone Alert Status Service 0000180f-0000-1000-8000-00805f9b34fb Battery Service 00001810-0000-1000-8000-00805f9b34fb Blood Pressure 00001811-0000-1000-8000-00805f9b34fb Alert Notification Service 00001812-0000-1000-8000-00805f9b34fb Human Interface Device 00001813-0000-1000-8000-00805f9b34fb Scan Parameters 00001814-0000-1000-8000-00805f9b34fb Running Speed and Cadence 00001816-0000-1000-8000-00805f9b34fb Cycling Speed and Cadence 00001818-0000-1000-8000-00805f9b34fb Cycling Power 00001819-0000-1000-8000-00805f9b34fb Location and Navigation GATT Characteristic UUIDs 00002a06-0000-1000-8000-00805f9b34fb Alert Level 00002a07-0000-1000-8000-00805f9b34fb Tx Power Level 00002a08-0000-1000-8000-00805f9b34fb Date Time 00002a09-0000-1000-8000-00805f9b34fb Day of Week 00002a0a-0000-1000-8000-00805f9b34fb Day Date Time 00002a0c-0000-1000-8000-00805f9b34fb Exact Time 256 00002a0d-0000-1000-8000-00805f9b34fb DST Offset 00002a0e-0000-1000-8000-00805f9b34fb Time Zone 00002a0f-0000-1000-8000-00805f9b34fb Local Time Information 00002a11-0000-1000-8000-00805f9b34fb Time with DST 00002a12-0000-1000-8000-00805f9b34fb Time Accuracy 00002a13-0000-1000-8000-00805f9b34fb Time Source 00002a14-0000-1000-8000-00805f9b34fb Reference Time Information 00002a16-0000-1000-8000-00805f9b34fb Time Update Control Point 00002a17-0000-1000-8000-00805f9b34fb Time Update State 00002a18-0000-1000-8000-00805f9b34fb Glucose Measurement 00002a19-0000-1000-8000-00805f9b34fb Battery Level 00002a1c-0000-1000-8000-00805f9b34fb Temperature Measurement 00002a1d-0000-1000-8000-00805f9b34fb Temperature Type 00002a1e-0000-1000-8000-00805f9b34fb Intermediate Temperature 00002a21-0000-1000-8000-00805f9b34fb Measurement Interval 00002a22-0000-1000-8000-00805f9b34fb Boot Keyboard Input Report 00002a23-0000-1000-8000-00805f9b34fb System ID 00002a24-0000-1000-8000-00805f9b34fb Model Number String 00002a25-0000-1000-8000-00805f9b34fb Serial Number String 00002a26-0000-1000-8000-00805f9b34fb Firmware Revision String 00002a27-0000-1000-8000-00805f9b34fb Hardware Revision String 00002a28-0000-1000-8000-00805f9b34fb Software Revision String 00002a29-0000-1000-8000-00805f9b34fb Manufacturer Name String 00002a2a-0000-1000-8000-00805f9b34fb IEEE 11073-20601 Regulatory Certification Data List 00002a2b-0000-1000-8000-00805f9b34fb Current Time 00002a31-0000-1000-8000-00805f9b34fb Scan Refresh 00002a32-0000-1000-8000-00805f9b34fb Boot Keyboard Output Report 00002a33-0000-1000-8000-00805f9b34fb Boot Mouse Input Report 00002a34-0000-1000-8000-00805f9b34fb Glucose Measurement Context 00002a35-0000-1000-8000-00805f9b34fb Blood Pressure Measurement 00002a36-0000-1000-8000-00805f9b34fb Intermediate Cuff Pressure 00002a37-0000-1000-8000-00805f9b34fb Heart Rate Measurement 00002a38-0000-1000-8000-00805f9b34fb Body Sensor Location 00002a39-0000-1000-8000-00805f9b34fb Heart Rate Control Point 00002a3e-0000-1000-8000-00805f9b34fb Network Availability 00002a3f-0000-1000-8000-00805f9b34fb Alert Status 00002a40-0000-1000-8000-00805f9b34fb Ringer Control Point 00002a41-0000-1000-8000-00805f9b34fb Ringer Setting 00002a42-0000-1000-8000-00805f9b34fb Alert Category ID Bit Mask 00002a43-0000-1000-8000-00805f9b34fb Alert Category ID 00002a44-0000-1000-8000-00805f9b34fb Alert Notification Control Point 00002a45-0000-1000-8000-00805f9b34fb Unread Alert Status 00002a46-0000-1000-8000-00805f9b34fb New Alert 00002a47-0000-1000-8000-00805f9b34fb Supported New Alert Category 00002a48-0000-1000-8000-00805f9b34fb Supported Unread Alert Category 00002a49-0000-1000-8000-00805f9b34fb Blood Pressure Feature 00002a4a-0000-1000-8000-00805f9b34fb HID Information 00002a4b-0000-1000-8000-00805f9b34fb Report Map 00002a4c-0000-1000-8000-00805f9b34fb HID Control Point 00002a4d-0000-1000-8000-00805f9b34fb Report 00002a4e-0000-1000-8000-00805f9b34fb Protocol Mode 00002a4f-0000-1000-8000-00805f9b34fb Scan Interval Window 00002a50-0000-1000-8000-00805f9b34fb PnP ID 00002a51-0000-1000-8000-00805f9b34fb Glucose Feature 00002a52-0000-1000-8000-00805f9b34fb Record Access Control Point 00002a53-0000-1000-8000-00805f9b34fb RSC Measurement 00002a54-0000-1000-8000-00805f9b34fb RSC Feature 00002a55-0000-1000-8000-00805f9b34fb SC Control Point 00002a5b-0000-1000-8000-00805f9b34fb CSC Measurement 00002a5c-0000-1000-8000-00805f9b34fb CSC Feature 00002a5d-0000-1000-8000-00805f9b34fb Sensor Location 00002a63-0000-1000-8000-00805f9b34fb Cycling Power Measurement 00002a64-0000-1000-8000-00805f9b34fb Cycling Power Vector 00002a65-0000-1000-8000-00805f9b34fb Cycling Power Feature 00002a66-0000-1000-8000-00805f9b34fb Cycling Power Control Point 00002a67-0000-1000-8000-00805f9b34fb Location and Speed 00002a68-0000-1000-8000-00805f9b34fb Navigation 00002a69-0000-1000-8000-00805f9b34fb Position Quality 00002a6a-0000-1000-8000-00805f9b34fb LN Feature 00002a6b-0000-1000-8000-00805f9b34fb LN Control Point
这里只列出了一部分,更多请参考 bluetooth.com。
Result: