前幾天寫一個(gè)關(guān)于養(yǎng)生和醫(yī)療的一個(gè)項(xiàng)目瞒窒,要寫一個(gè)類似微信運(yùn)動(dòng)的計(jì)步器功能但骨,只好先去研究一下計(jì)步器功能實(shí)現(xiàn)躲惰。
之前在我的印象中致份,直接調(diào)用healthKit框架獲取蘋果的健康應(yīng)用數(shù)據(jù)就挺好,結(jié)果查了一大堆資料础拨,還真給學(xué)到了不少氮块。而且對(duì)新手而言,了解比應(yīng)用更重要诡宗,所以本文中盡量減少了代碼滔蝉,偏于展示效果和簡(jiǎn)單說明。
需要清楚的是iPhone5s塔沃、iPhone6蝠引、iPhone6 Plus、iPhone6s蛀柴、iPhone6s Plus使用了M7或者M(jìn)8處理器螃概,所以可以輕易的實(shí)現(xiàn)計(jì)步器功能。
所以:5s以下的設(shè)備是不支持手機(jī)計(jì)步鸽疾。
HealthKit簡(jiǎn)述:
HealthKit框架提供了一個(gè)結(jié)構(gòu)吊洼,應(yīng)用可以使用它來(lái)分享健康和健身數(shù)據(jù)。HealthKit管理從不同來(lái)源獲得的數(shù)據(jù)制肮,并根據(jù)用戶的偏好設(shè)置冒窍,自動(dòng)將不同來(lái)源的所有數(shù)據(jù)合并起來(lái)递沪。應(yīng)用還可以獲取每個(gè)來(lái)源的原始數(shù)據(jù),然后執(zhí)行自己的數(shù)據(jù)合并超燃。
計(jì)步器功能比較普遍的有兩種方法区拳,不排除有什么賊好但是老猥瑣的第三方庫(kù)拘领。
bid要打開HealthKit功能意乓,Xcode-capabilities-HealthKit打開
第一種:直接了當(dāng)?shù)姆椒ㄍ苟妫苯诱{(diào)用系統(tǒng)的健康數(shù)據(jù)剪芍,基于HealthKit框架的洒宝,但是數(shù)據(jù)的更新時(shí)間不給力雅任,貌似是一個(gè)小時(shí)更新一次數(shù)據(jù)昂秃,好可憐爆惧,如果是實(shí)時(shí)獲取步數(shù)屑那,這種方法就不堪入目了哈踱。
效果展示:
使用HealthKit特別注意
你的應(yīng)用不應(yīng)該將HealthKit收集的數(shù)據(jù)用于廣告或類似的服務(wù)送悔。注意慢显,在使用HealthKit框架應(yīng)用中可以插播廣告,但是你不能使用HealthKit中的數(shù)據(jù)來(lái)服務(wù)廣告欠啤。
在沒有用戶的明確允許下荚藻,你不能向第三方展示任何HealthKit收集的數(shù)據(jù)。即使用戶允許洁段,你也只能向提供健康或健身服務(wù)的第三方展示這些數(shù)據(jù)应狱。
你不能將HealthKit收集的數(shù)據(jù)出售給廣告平臺(tái)、數(shù)據(jù)代理人或者信息經(jīng)銷商祠丝。
如果用戶允許疾呻,你可以將HealthKit數(shù)據(jù)共享給第三方用于醫(yī)學(xué)研究。注意是用戶允許
你必須明確說明写半,你和你的應(yīng)用會(huì)怎樣使用用戶的HealthKit數(shù)據(jù)岸蜗。
Demo地址:讓子彈飛一飛
第二種:使用Core Motion:外部使用CMPedometer或者CMStepCounter來(lái)讀取用戶的步數(shù)和走的里程。
效果展示:
Demo:再去飛一飛
其次叠蝇,需要注意的是璃岳,Core Motion中的有兩種計(jì)步:CMStepCounter和CMPedomete。CMPedomete必須iOS8.0以上才可以使用蟆肆,但是CMPedomete卻可以獲取更多的運(yùn)動(dòng)信息(步數(shù)矾睦、距離、上下樓層數(shù)炎功、速度枚冗、節(jié)奏、開始和結(jié)束時(shí)間查詢行走相關(guān)信息蛇损、某一時(shí)刻開始監(jiān)測(cè)步數(shù)變化)赁温,而CMStepCounter只能獲取步數(shù)坛怪。也有那種對(duì)兩種進(jìn)行封裝的方法。Demo:最后一次飛
兩者的區(qū)別:
其實(shí)第一種Healthkit也是使用CMPedometer或CMStepCounter來(lái)讀入用戶的步數(shù)和走的里程的股囊,只不過計(jì)算方法在手機(jī)內(nèi)部袜匿。它是利用 iphone5s 以上的m處理器來(lái)獲取數(shù)據(jù)計(jì)算了,所以5s以下的設(shè)備是不支持 CMPedometer 手機(jī)計(jì)步的。
直接使用HealthKit計(jì)步會(huì)有缺點(diǎn)稚疹,計(jì)步不準(zhǔn)居灯,主要是因?yàn)镠ealthKit記錄的時(shí)區(qū)問題,iOS獲取時(shí)間的時(shí)區(qū)按中國(guó)的時(shí)區(qū)少了8個(gè)小時(shí)