运动传感器
- 第一步
import CodeMotion
- 第二步 在
info.plist
中的Privacy - Motion Usage Description
添加运动传感器获取权限
// 设备是否支持计步功能 CMPedometer.isStepCountingAvailable()
// 设备是否支持距离 CMPedometer.isDistanceAvailable()
// 设备是否支持速度 CMPedometer.isPaceAvailable()
// 设备是否支持节奏 CMPedometer.isCadenceAvailable()
// 设备是否支持计步事件 CMPedometer.isPedometerEventTrackingAvailable()
// 当前授权状态 CMPedometer.authorizationStatus().rawValue)
var pedometer = CMPedometer.init()
/// 开始事件更新
self.pedometer.startEventUpdates(handler: { pedometerData, error in
// 计步器开始时间 pedometerData?.startDate
// 计步器结束时间 pedometerData?.endDate
// 用户步数 pedometerData?.numberOfSteps
// 用户行走和跑步的距离 pedometerData?.distance
// 用户上楼的层数 pedometerData?.floorsAscended
// 用户下楼的层数 pedometerData?.floorsDescended
// 当前速度 pedometerData?.currentPace
// 当前节奏 pedometerData?.currentCadence
// 当前活动平均速度 pedometerData?.averageActivePace
})
/// 停止事件更新
// 停止更新后如果重新开始 pedometerData 会重置,如果需要查历史数据需要通过 queryPedometerData 去查询
self.pedometer.stopUpdates()
/// 通过时间段获取历史数据
self.pedometer.queryPedometerData(from: start, to: end) { pedometerData, error in }
授权状态
/// 获取运动与健康授权状态
CMPedometer.authorizationStatus()
/// iOS 11.0 以下获取不到对应的运动传感器授权权限
@available(iOS 11.0, *)
public enum CMAuthorizationStatus : Int {
case notDetermined = 0
case restricted = 1
case denied = 2
case authorized = 3
}
iPad
iPad 获取不到实时运动传感器数据,startEventUpdates
回调不返回数据。系统没有 "健康(Health)" 应用,但是对应应用下的设置页面可以看到 “运动与健康” 权限