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
相关产品推荐
相关产品推荐

