更新记录

1.0.1(2025-02-10)

  • 新增uniapp使用完整示例

1.0.0(2025-02-08)

  • 新版发布

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:5.0,iOS:11,HarmonyNext:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

yt-uts-pedometer

特别提醒

  • 购买本插件前,请先试用、请先试用、请先试用,并充分自测确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款;
  • 如有使用上的疑问、bug,可以进交流群联系作者;
  • 作者可承接各种插件定制;
  • 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
  • 请尽量使用Demo工程测试功能,若自己项目中若遇到使用问题,请打包Demo工程复现后,反馈问题;
  • Android计步仅在App处于前后台期间可用,若App从后台管理中移除(App杀掉了,或长时间在后台被系统回收了),则不在计数。也就是app活着才会统计步数,若需后台长时间统计可结合保活插件使用(后续也会加上保活功能);
  • 获取用户运动与健康权限是必须的,使用前请确保此权限打开;

uniapp 完整示例--- uniapp接入时 Android端需设置targetSdkVersion >= 29, 设置教程

<template>
    <view class="content">
        <button class="btn" @click="startPedometerAction()">开启计步</button>
        <button class="btn" @click="stopPedometerAction()">关闭计步</button>
        <button class="btn" @click="queryPedometerDataForTodayAction()">查询当天运动数据</button>
        <button class="btn" @click="deleteTodayData()">清除当天步数(仅Android)</button>
        <button class="btn" @click="queryPedometerDataFromDateAction()">查询日期范围内数据(仅iOS)</button>
        <button class="btn" @click="authorizationStatusDeniedAction()">判断用户是否拒绝使用权限</button>
        <button class="btn" @click="toSettingAction()">跳转到设置页面</button>
    </view>
</template>

<script>
    import {
        startPedometer,
        stopPedometer,
        authorizationStatusDenied,
        queryPedometerDataForToday,
        queryPedometerDataFromDate,
        StartPedometerOptions,
        PedometerResultData,
        QueryPedometerDataOptions,
        deleteTodayPedometerData,
        toSetting
    } from '@/uni_modules/yt-uts-pedometer'
    export default {
        data() {
            return {

            }
        },
        methods: {
            //开启计步服务
            startPedometerAction() {
                // if (authorizationStatusDenied()) {
                //  //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                //  return;
                // }
                startPedometer({
                    callBack: (res) => {
                        //ios端还返回上、下楼层数和速度
                        if (res.isUpdateBefore) { //截止本次服务开启前,今天已走步数
                            console.log(`截止本次服务开启前今日已走:${res.steps}步`)
                        } else { //记录本次服务开启后走的步数
                            console.log(`本次服务开启后已走:${res.steps}步`)
                        }
                    },
                    fail: (error) => {
                        console.log(error)
                    }
                });
            },
            //关闭计步服务
            stopPedometerAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                stopPedometer()
            },
            //删除当日步数
            deleteTodayData() {
                deleteTodayPedometerData()
            },
            //查询今天的步数
            queryPedometerDataForTodayAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                queryPedometerDataForToday({
                    callBack: (res) => {
                        uni.showToast({
                            title: `今日已走${res.steps}步`,
                            icon: 'none'
                        })
                        console.log(res)
                    },
                    fail: (e) => {
                        console.log(e)
                    }
                })
            },
            //查询时间范围内的步数 ---仅iOS有效
            queryPedometerDataFromDateAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                queryPedometerDataFromDate({
                    startDate: '2025-01-20 00:00:00',
                    endDate: '2025-01-23 15:05:00',
                    callBack: (res) => {
                        console.log(res)
                    },
                    fail: (e) => {
                        console.log(e)
                    }
                })
            },
            //查询用户是否拒绝了访问运动与健康权限
            authorizationStatusDeniedAction() {
                let a = authorizationStatusDenied();
                console.log(a)
                uni.showToast({
                    title: a ? '没有权限' : '有权限',
                    icon: a ? 'error' : 'success'
                })
            },
            //跳到设置页面
            toSettingAction() {
                toSetting()
            }
        }
    }
</script>

<style>
    .content {
        width: 750rpx;
        height: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .btn {
        margin-top: 30rpx;
        background-color: cornflowerblue;
        width: 690rpx;
    }
</style>

uniapp x 完整示例

<template>
    <view class="content">
        <button class="btn" @click="startPedometerAction()">开启计步</button>
        <button class="btn" @click="stopPedometerAction()">关闭计步</button>
        <button class="btn" @click="queryPedometerDataForTodayAction()">查询当天运动数据</button>
        <button class="btn" @click="deleteTodayData()">清除当天步数(仅Android)</button>
        <button class="btn" @click="queryPedometerDataFromDateAction()">查询日期范围内数据(仅iOS)</button>
        <button class="btn" @click="authorizationStatusDeniedAction()">判断用户是否拒绝使用权限</button>
        <button class="btn" @click="toSettingAction()">跳转到设置页面</button>
    </view>
</template>

<script>
    import {
        startPedometer,
        stopPedometer,
        authorizationStatusDenied,
        queryPedometerDataForToday,
        queryPedometerDataFromDate,
        StartPedometerOptions,
        PedometerResultData,
        QueryPedometerDataOptions,
        deleteTodayPedometerData,
        toSetting
    } from '@/uni_modules/yt-uts-pedometer'
    export default {
        data() {
            return {

            }
        },
        methods: {
            //开启计步服务
            startPedometerAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                startPedometer({
                    callBack: (res) => {
                        //ios端还返回上、下楼层数和速度
                        if (res.isUpdateBefore) {//截止本次服务开启前,今天已走步数
                            console.log(`截止本次服务开启前今日已走:${res.steps}步`)
                        } else {//记录本次服务开启后走的步数
                            console.log(`本次服务开启后已走:${res.steps}步`)
                        }
                    },
                    fail: (error) => {
                        console.log(error)
                    }
                } as StartPedometerOptions);
            },
            //关闭计步服务
            stopPedometerAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                stopPedometer()
            },
            //删除当日步数
            deleteTodayData() {
                deleteTodayPedometerData()
            },
            //查询今天的步数
            queryPedometerDataForTodayAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                queryPedometerDataForToday({
                    callBack: (res) => {
                        uni.showToast({
                            title: `今日已走${res.steps}步`,
                            icon: 'none'
                        })
                        console.log(res)
                    },
                    fail: (e) => {
                        console.log(e)
                    }
                } as StartPedometerOptions)
            },
            //查询时间范围内的步数 ---仅iOS有效
            queryPedometerDataFromDateAction() {
                if (authorizationStatusDenied()) {
                    //用户明确拒绝了应用访问运动与健身数据的权限--引导用户去设置开启
                    return;
                }
                queryPedometerDataFromDate({
                    startDate: '2025-01-20 00:00:00',
                    endDate: '2025-01-23 15:05:00',
                    callBack: (res) => {
                        console.log(res)
                    },
                    fail: (e) => {
                        console.log(e)
                    }
                } as QueryPedometerDataOptions)
            },
            //查询用户是否拒绝了访问运动与健康权限
            authorizationStatusDeniedAction() {
                let a = authorizationStatusDenied();
                console.log(a)
                uni.showToast({
                    title: a ? '没有权限' : '有权限',
                    icon: a ? 'error' : 'success'
                })
            },
            //跳到设置页面
            toSettingAction() {
                toSetting()
            }
        }
    }
</script>

<style>
    .content {
        width: 750rpx;
        height: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .btn {
        margin-top: 30rpx;
        background-color: cornflowerblue;
        width: 690rpx;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android:<uses-permission android:name="android.permission.VIBRATE" /> <!-- 修改系统设置权限 --> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 加速度计 --> <uses-feature android:name="android.hardware.sensor.accelerometer" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- 是一个用于请求 挂载和卸载文件系统权限 的权限声明 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 高采样率传感器权限 的权限声明 --> <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" /> <!-- 这个权限允许应用程序访问设备的传感器数据,例如步数、运动状态(走路、跑步、骑车等)以及其他与用户活动相关的信息 --> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <!-- 告诉 Google Play 和其他应用分发平台,你的应用需要设备支持特定的硬件功能,如果设备不支持指定的功能,Google Play 会阻止用户安装你的应用 --> <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="true" /> ios:NSMotionUsageDescription

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问