敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20250330.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: 30000
}, 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: "CF:E8:05:15:01:91"
}, 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));
});
监听回调数据: