npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-lefu-sdk

v0.4.2

Published

lefu-sdk

Readme

react-native-lefu-sdk

乐福 (Lefu) 体脂秤 SDK 的 React Native 封装插件。支持 Android 和 iOS,提供设备扫描、连接、实时称重数据获取以及身体成分分析功能。

功能特性

  • 📱 多平台支持:完整支持 Android 和 iOS。
  • 🔍 设备扫描:快速发现周边的乐福蓝牙秤。
  • 🔗 稳定连接:支持多种型号的乐福秤(包括 4 电极和 8 电极)。
  • ⚖️ 实时数据:获取实时称重过程数据、锁定数据。
  • 📊 深度分析:集成身体成分计算库,返回 BMI、体脂率、肌肉量等详细指标。
  • 🔐 权限引导:原生层内置美观的蓝牙与定位权限/开关引导。
  • 📂 统一存储:用户信息在 JS 侧统一管理(使用 AsyncStorage),实时同步至原生计算库。

安装

yarn add react-native-lefu-sdk
# 或
npm install react-native-lefu-sdk

依赖安装

本插件依赖于 @react-native-async-storage/async-storage 进行用户信息持久化,请确保已安装:

yarn add @react-native-async-storage/async-storage

配置指南

Android

  1. 权限声明:在 android/app/src/main/AndroidManifest.xml 中添加:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Android 12+ -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
  1. Maven 仓库配置:在 android/build.gradle 中添加乐福原生 SDK 的仓库:
allprojects {
    repositories {
        maven { url "https://raw.githubusercontent.com/LefuHengqi/PPBaseKit-Android/main" }
        // 修复 AsyncStorage 3.0+ 的构建问题
        maven {
            url "$rootDir/../node_modules/@react-native-async-storage/async-storage/android/local_repo"
        }
    }
}

iOS

  1. 权限声明:在 Info.plist 中添加蓝牙权限描述:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>我们需要蓝牙权限来连接您的乐福秤</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>我们需要蓝牙权限来连接您的乐福秤</string>
  1. Pod 安装
cd ios && pod install

快速上手

1. 初始化 SDK

建议在 App 启动时进行初始化:

import { initSdk } from 'react-native-lefu-sdk';

const APP_KEY = '您的AppKey';
const APP_SECRET = '您的AppSecret';

await initSdk(APP_KEY, APP_SECRET);

2. 权限与硬件状态检查

本插件提供了强大的引导功能:

import { requestPermissions, getHardwareStatus } from 'react-native-lefu-sdk';

// 检查并引导用户开启蓝牙和定位
const status = await getHardwareStatus();
if (!status.bluetoothEnabled || !status.locationEnabled) {
  // 原生层会自动弹出美观的 AlertDialog 引导用户开启
  await requestPermissions();
}

3. 用户信息管理 (计算身体指标必选)

为了准确计算体脂率等指标,必须先设置用户信息。建议在 JS 侧管理用户列表:

import { saveCurrentUser } from 'react-native-lefu-sdk';

const user = {
  userID: 'user_123',
  memberId: 'member_456',
  age: 25,
  userHeight: 180, // 单位:cm
  sex: 1, // 1: 男, 0: 女
  isAthleteMode: false,
};

// 此方法会自动持久化并同步到原生 SDK 的计算内存中
await saveCurrentUser(JSON.stringify(user));

4. 扫描与连接

import { startScan, addScanListener, connect } from 'react-native-lefu-sdk';

// 监听扫描结果
const sub = addScanListener((device) => {
  console.log('发现设备:', device.name, device.address);
  // 连接设备
  connect(device.address);
});

startScan();

5. 接收测量数据

import { addScaleDataListener } from 'react-native-lefu-sdk';

addScaleDataListener((data) => {
  switch(data.type) {
    case 'process':
      console.log('测量中...', data.weight);
      break;
    case 'lock':
      console.log('数据已锁定', data.weight);
      break;
    case 'calculation_success':
      // 身体成分分析结果
      const analysis = JSON.parse(data.data);
      console.log('BMI:', analysis.ppBMI);
      console.log('体脂率:', analysis.ppFat);
      break;
    case 'overweight':
      console.warn('超重!');
      break;
  }
});

API 概览

方法

| 方法名 | 说明 | | :--- | :--- | | initSdk(key, secret) | 初始化乐福 SDK | | requestPermissions() | 请求蓝牙/定位权限(含 Android 原生引导弹窗) | | getHardwareStatus() | 获取详细硬件状态(权限、蓝牙开关、定位开关) | | startScan() | 开始扫描周边设备 | | stopScan() | 停止扫描 | | connect(address) | 连接指定 Mac 地址的设备 | | saveCurrentUser(json) | 保存当前用户并同步至原生计算库 | | getCurrentUser() | 获取当前持久化的用户信息 | | saveUserList(json) | 保存用户列表(JS 侧持久化) | | getUserList() | 获取用户列表 | | startLogListener() | 开启原生日志监听 |

事件监听

  • addScanListener(callback): 扫描到新设备。
  • addScaleDataListener(callback): 称重数据更新。
  • addScanStateListener(callback): 扫描状态变更。
  • addBluetoothStateListener(callback): 蓝牙状态变更。
  • addLogListener(callback): 原生日志输出。

数据模型

身体分析结果 (calculation_success)

分析结果包含以下关键指标(取决于秤的型号):

  • ppBMI: BMI 指数
  • ppFat: 体脂率
  • ppMuscle: 肌肉量
  • ppBMR: 基础代谢
  • ppVisceralFat: 内脏脂肪等级
  • ppWater: 体水分
  • ppBone: 骨量
  • ppProtein: 蛋白质
  • ppBodyAge: 身体年龄
  • ... 以及 8 电极特有的肢体分析数据。

开源协议

MIT