敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20250305.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
事件监听
• 如需接口调用事件,请设置此监听器;
jsBridge.lefu.setListener(function(event, data) { switch (event) { // 扫描 jsBridge.lefu.startSearch(...) case "search": { switch (data.action) { // 扫描到设备 case "onSearchDevice": { // data.data.device 设备对象-PPDeviceModel // data.data.data 广播数据 string break; } } } // 蓝牙状态回调 case "bleState": { switch (data.action) { //切换蓝牙开关 case "monitorBluetoothSwitchState": { // data.data.state 状态,可能值 // PPBleSwitchStateOn // PPBleSwitchStateOff break; } //蓝牙设备工作状态 case "monitorBluetoothWorkState": { // data.data.device 设备 // data.data.state 状态,可能值 // PPBleWorkStateSearching // PPBleWorkStateCanBeConnected // PPBleWorkSearchTimeOut // PPBleWorkSearchFail // PPBleStateSearchCanceled // PPBleWorkStateConnecting 正在连接 // PPBleWorkStateConnected 已连接 // PPBleWorkStateConnectFailed 连接失败 // PPBleDiscoverServiceFail // PPBleWorkStateDisconnected 已断开 // PPBleWorkStateWritable 可写(可交互数据) break; } //仅 Android case "monitorMtuChange": { // data.data.device 设备 break; } } break; } // 数据变化 PPDataChangeListener case "dataChange": { switch (data.action) { //过程数据 case "monitorProcessData": { // data.data.body 数据 PPBodyBaseModel // data.data.device 设备 break; } //锁定数据 case "monitorLockData": { // data.data.body // data.data.device break; } //超重 case "monitorOverWeight": { break; } case "monitorScaleState": { // data.data.scaleState break; } //仅 Android case "monitorLockDataByCalculateInScale": { // data.data.bodyFatInScaleVo break; } //仅 Android case "monitorDataFail": { // data.data.body // data.data.device break; } //仅 Android case "onImpedanceFatting": { break; } //仅 Android case "onDeviceShutdown": { break; } } break; } // 仅 Android // 设置 - 安卓打包设置 - 调试模式 - 开启 后生成的安装包可监听到 SDK 日志 case "log": { // data.level 日志级别,可能值 verbose、info、debug、warn、error // data.text 日志内容 return; //不在本页面底部显示日志信息 } } //此函数仅用于显示回调参数在本 DEMO 页面上 showResult({ event: event, data : data }); }); //请拉到页面底部查看回调数据信息 $('html,body').animate({ scrollTop: $('#view').offset().top }, 500); /** 回调参数说明: event - 事件代码,字符串类型 data - 事件数据,JSON 对象 **/
//移除监听器,不会再收到回调通知 //在需要时可重新调用 setListener jsBridge.lefu.removeListener();
蓝牙设备
jsBridge.lefu.requestPermission(function(success, res) { if (success && res) { //如果 res.neverAsk == true (不再询问),请调用 jsBridge.appSettings() 打开应用设置,引导用户去手工开启权限 alert(`${res.granted ? '已同意' : '已拒绝'}\n不再询问:${res.neverAsk}`); } else { alert(JSON.stringify(res)); } });
jsBridge.lefu.requestEnable(function(success, res) { if (success && res) { //如果设备蓝牙功能处于关闭状态,会自动提示开启 alert(res.enabled ? "已开启" : "已关闭"); } else { alert(JSON.stringify(res)); } });
timeout:
jsBridge.lefu.startSearch({ //超时时间,毫秒 ms,最少 5000 timeout: {{startSearch.timeout}} }, function(success, res) { //成功启动扫描后请在 setListener 监听器的 "search" 事件中处理扫描结果 alert(success ? "已启动扫描" : JSON.stringify(res)); });
jsBridge.lefu.stopSearch(function(success, res) { alert(success ? "已停止" : JSON.stringify(res)); });
jsBridge.lefu.isSearching(function(success, res) { if (success && res) { alert(res.isSearching ? "正在扫描" : "未扫描"); } else { alert(JSON.stringify(res)); } });
人体秤 - PeripheralApple
deviceMac:
jsBridge.lefu.appleStartConnect({ //蓝牙设备 MAC 地址 //需先执行 startSearch 接口搜索设备 //用 setListener 的 search 事件中返回类型为 device.devicePeripheralType == 'PeripheralApple' 的 device.deviceMac 地址 deviceMac: "{{appleStartConnect.deviceMac}}" }, function(success, res) { //成功启动连接后仅表示启动了连接操作,并非成功连接上了 //请在 setListener 的 bleState 事件中监听设备工作状态,PPBleWorkStateConnected 时表示连接成功 alert(success ? "已启动连接操作" : JSON.stringify(res)); });
jsBridge.lefu.appleDisConnect(function(success, res) { alert(success ? "已断开" : JSON.stringify(res)); });
jsBridge.lefu.appleIsConnected(function(success, res) { if (success && res) { alert(res.isConnected ? "已连接" : "已断开"); } else { alert(JSON.stringify(res)); } });
//仅支持历史数据的设备 jsBridge.lefu.appleSyncTime(function(success, res) { alert(success ? "同步成功" : JSON.stringify(res)); });
jsBridge.lefu.appleReadDeviceInfo(function(success, res) { alert(`${success ? '成功' : '失败'}\n${JSON.stringify(res)}`); });
jsBridge.lefu.appleSyncUnit({ //单位,可选值 // Unit_KG // Unit_LB // PPUnitST_LB // PPUnitJin // PPUnitG // PPUnitLBOZ // PPUnitOZ // PPUnitMLWater // PPUnitMLMilk // PPUnitFL_OZ_WATER // PPUnitFL_OZ_MILK // PPUnitST unit: 'Unit_KG', //用户 user: { deviceHeaderIndex: 0, userName: "张三", userID: "user123", memberID: "member123", height: 163, age: 22, //true 男, false 女 isMale: false, groupNum: 0, isAthleteMode: false, isPregnantMode: false, weightKg: 51.0, argetWeight: 0.0, ideaWeight: 0.0, userWeightTimeArray: [1735660800, 1736006400, 1736438400, 1736870400], userWeightArray: [50.0, 51.0, 50.0, 49.0], pIndex: 0, bmi: 0.0, bodyFat: 0.0, heartRate: 0, muscle: 0.0, muscleRate: 0.0, bone: 0.0, boneRate: 0.0, waterRate: 0.0 } }, function(success, res) { alert(success ? "同步成功" : JSON.stringify(res)); });
jsBridge.lefu.appleGetHistoryData(function(success, res) { //res.time //res.body //res.device alert(`${success ? '成功' : '失败'}\n${JSON.stringify(res)}`); });
jsBridge.lefu.appleDeleteHistoryData(function(success, res) { alert(success ? "成功" : JSON.stringify(res)); });
jsBridge.lefu.appleSendResetDevice(function(success, res) { alert(success ? "成功" : JSON.stringify(res)); });
jsBridge.lefu.appleResetSendListener(function(success, res) { alert(success ? "成功" : JSON.stringify(res)); });
监听回调数据: