You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova stepcounter插件调用getStepCount()无法获取步数如何解决

Cordova Step Counter插件getStepCount()返回值正确获取方案

错误原因

Cordova Step Counter插件的所有接口均为异步设计,不存在同步返回值:

  • 第一种写法中直接将getStepCount()的返回值赋值给变量,该方法原生返回值为undefined,自然无法拿到步数
  • 第二种写法中start方法的成功回调仅代表计步器初始化启动成功,回调参数不会返回当前步数,无法通过该方法取值

正确实现代码

getStepCount()需要和start方法一样,传入成功、失败两个回调函数,步数仅会在成功回调的参数中返回:

// 计步器启动成功回调
const startSuccess = () => {
  // 必须在计步器启动完成后再调用获取步数接口
  stepcounter.getStepCount(
    // 成功回调:参数即为当前累计步数
    (currentStep) => {
      const steps = currentStep
      alert(`当前步数:${steps}`)
      // 所有需要使用步数的逻辑必须在此回调内执行,或通过函数传递到外部
      processStepData(steps)
    },
    // 失败回调:接口调用失败时触发
    () => {
      alert("获取步数失败")
    }
  )
}

// 计步器启动失败回调
const startFail = () => {
  alert("CordovaStepCounter Plugin启动失败")
}

// 启动计步器,传入启动相关回调
stepcounter.start(startingOffset, startSuccess, startFail)

常见补充场景

如果需要实时获取最新步数,可以在启动成功后开启定时器轮询:

const startSuccess = () => {
  // 每隔1秒拉取一次最新步数
  setInterval(() => {
    stepcounter.getStepCount(
      (currentStep) => console.log('实时步数:', currentStep),
      () => console.log('步数拉取失败')
    )
  }, 1000)
}

注意事项

需要提前为应用申请对应权限,否则接口调用正常也无法拿到有效步数:

  • Android端需要申请ACTIVITY_RECOGNITION运动识别权限
  • iOS端需要申请Motion & Fitness运动与健身权限

内容的提问来源于stack exchange,提问作者Krixild

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:15:05