要實現計步需要清楚的是iPhone5s、iPhone6、iPhone6 Plus、iPhone6s、iPhone6s Plus使用了M7或者M8處理器,所以可以輕易的實現計步器功能。
所以:5s以下的設備是不支持手機計步。(不過我在測試的時候5也是可以的)
一、HealthKit簡述:
HealthKit框架提供了一個結構,應用可以使用它來分享健康和健身數據。HealthKit管理從不同來源獲得的數據,并根據用戶的偏好設置,自動將不同來源的所有數據合并起來。應用還可以獲取每個來源的原始數據,然后執行自己的數據合并。
使用HealthKit特別注意
你的應用不應該將HealthKit收集的數據用于廣告或類似的服務。注意,在使用HealthKit框架應用中可以插播廣告,但是你不能使用HealthKit中的數據來服務廣告。
在沒有用戶的明確允許下,你不能向第三方展示任何HealthKit收集的數據。即使用戶允許,你也只能向提供健康或健身服務的第三方展示這些數據。
你不能將HealthKit收集的數據出售給廣告平臺、數據代理人或者信息經銷商。
如果用戶允許,你可以將HealthKit數據共享給第三方用于醫學研究。注意是用戶允許
你必須明確說明,你和你的應用會怎樣使用用戶的HealthKit數據。
二、使用Core Motion:外部使用CMPedometer或者CMStepCounter來讀取用戶的步數和走的里程。
需要注意的是,Core
Motion中的有兩種計步:CMStepCounter和CMPedomete。CMPedomete必須iOS8.0以上才可以使用,但是CMPedomete卻可以獲取更多的運動信息(步數、距離、上下樓層數、速度、節奏、開始和結束時間查詢行走相關信息、某一時刻開始監測步數變化),而CMStepCounter只能獲取步數。也有那種對兩種進行封裝的方法。
兩者的區別:
其實第一種Healthkit也是使用CMPedometer或CMStepCounter來讀入用戶的步數和走的里程的,只不過計算方法在手機內部。它是利用
iphone5s 以上的m處理器來獲取數據計算了,所以5s以下的設備是不支持 CMPedometer 手機計步的。
直接使用HealthKit計步會有缺點,計步不準,主要是因為HealthKit記錄的時區問題,iOS獲取時間的時區按中國的時區少了8個小時
最后上代碼(因為項目就只需要拿到步數即可,則使用的是CMStepCounter):
1.
2.
3.
4.
5.
2017.3.31 更新
在這里需要設置一下
希望可以給你一點幫助,以上。