比赛作品涉及计步功能,计步属于健康范畴,当前Apple的HealthKit可以很好的提供健康数据,但是由于涉及隐私,在添加HealthKit时必须要付费的开发者账号,而且包含HealthKit的App审核也更严格。 我目前只需实现简单的计步功能,因此关注到了CoreMotion框架的CMPedometer类,今天简单说说:
这块国内资料较少,科学上网一阵之后发现 官方文档 已经足够清晰明了。顾名思义,该类为了方便获取行走相关数据而设计,除了可用性检查几个关键方法:
//Swift
func startPedometerUpdatesFromDate(_ start: NSDate,
withHandler handler: CMPedometerHandler)
stopPedometerUpdates停止更新//Swift
func queryPedometerDataFromDate(_ start: NSDate,
toDate end: NSDate,
withHandler handler: CMPedometerHandler)
上面提到的block
//Swift
typealias CMPedometerHandler = (CMPedometerData?, NSError?) -> Void
步数主要在CMPedometerData类的numberOfSteps属性里取
昨天做了个测试,踩进坑里倒腾了一下午,总结一下:
Error Domain=CMErrorDomain Code=103 "(null)"。原因就是该方法在启动执行完毕后,临时变量就释放了。对于这样一个持续获取数据的类来说,自然在启动后获取不到数据,这里利用打印block中的error参数可以帮助找到问题最后,stackoverflow要多用!
Written on April 28th, 2016 by 乔黎博