這篇文章介紹兩種可以獲取計步數(shù)據(jù)的方法,一種是采用CMPedometer獲取手機(jī)計步器數(shù)據(jù),另一種是采用HealthKit框架從手機(jī)健康A(chǔ)pp中獲取計步數(shù)據(jù)。另外玩了一下寫入數(shù)據(jù)到健康A(chǔ)pp。有描述不當(dāng)之處,望指點(diǎn)。
成都創(chuàng)新互聯(lián)成立與2013年,先為新寧等服務(wù)建站,新寧等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新寧企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。花絮(用HealthKit框架構(gòu)建app,寫入數(shù)據(jù)到蘋果健康app中,QQ和Keep等第三方app的運(yùn)動數(shù)據(jù)都會隨之改變,猜測它們的運(yùn)動數(shù)據(jù)是直接從蘋果健康app中獲取,而且沒有過濾掉其它數(shù)據(jù)來源。而微信運(yùn)動的數(shù)據(jù)不會變,猜測其來源可能是使用CMPedometer類獲取的,因?yàn)闇y試發(fā)現(xiàn)把微信運(yùn)動的數(shù)據(jù)來源(蘋果健康)關(guān)閉后,依然會有運(yùn)動數(shù)據(jù),而且該運(yùn)動數(shù)據(jù)和CMPedometer類獲取的一致。)
使用CMPedometer類來獲取步數(shù)和距離
使用時需要導(dǎo)入
CMPedometer
+ (BOOL)isStepCountingAvailable; 設(shè)備是否支持計步功能
+ (BOOL)isDistanceAvailable; 除了計步,設(shè)備是否支持距離估計
+ (BOOL)isFloorCountingAvailable; 除了計步,設(shè)備是否支持臺階計數(shù)
+ (BOOL)isPaceAvailable NS_AVAILABLE(NA,9_0);除了計步,設(shè)備是否支持速度估計
+(BOOL)isCadenceAvailable NS_AVAILABLE(NA,9_0);除了計步,設(shè)備是否支持節(jié)奏估計
+ (BOOL)isPedometerEventTrackingAvailable NS_AVAILABLE(NA,10_0) __WATCHOS_AVAILABLE(3_0);設(shè)備是否支持計步器事件
- (void)queryPedometerDataFromDate:(NSDate *)start toDate:(NSDate *)end withHandler:(CMPedometerHandler)handler;在給定時間范圍內(nèi)查詢用戶的行走活動,數(shù)據(jù)最多可以使用7天內(nèi)有效,返回的數(shù)據(jù)是從系統(tǒng)范圍的歷史記錄中計算出來的,該歷史記錄是在后臺連續(xù)收集的。結(jié)果返回在串行隊列中。
- (void)startPedometerUpdatesFromDate:(NSDate *)start withHandler:(CMPedometerHandler)handler;在串行隊列上啟動一系列連續(xù)計步器更新到處理程序。 對于每次更新,應(yīng)用程序?qū)闹付ǖ拈_始日期和與最新確定相關(guān)聯(lián)的時間戳開始收到累積的行人活動。 如果應(yīng)用程序在后臺進(jìn)行背景調(diào)整,則應(yīng)用程序?qū)⒃谙麓胃轮惺盏皆诤笈_期間累積的所有行人活動。
-(void)stopPedometerUpdates;停止計步器更新
-(void)startPedometerEventUpdatesWithHandler:(CMPedometerEventHandler)handler NS_AVAILABLE(NA,10_0) __WATCHOS_AVAILABLE(3_0);在串行隊列上啟動計步器事件更新。 事件僅在應(yīng)用程序在前臺/后臺運(yùn)行時可用。
-(void)stopPedometerEventUpdates NS_AVAILABLE(NA,10_0) __WATCHOS_AVAILABLE(3_0);停止計步器事件更新
CMPedometerData
@property(readonly, nonatomic) NSDate *startDate;計步器數(shù)據(jù)有效期間的開始時間。這是會話或歷史查詢請求的開始時間。
@property(readonly, nonatomic) NSDate *endDate;計步器數(shù)據(jù)有效期間的結(jié)束時間。對于更新,這是最新更新的時間。 對于歷史查詢,這是請求的結(jié)束時間。
@property(readonly, nonatomic) NSNumber *numberOfSteps;用戶的步數(shù)
@property(readonly, nonatomic, nullable) NSNumber *distance; 用戶行走和跑步時估計的一米為單位的距離。若設(shè)備不支持則值為nil
@property(readonly, nonatomic, nullable) NSNumber *floorsAscended;上樓的大概樓層數(shù),若設(shè)備不支持則值為nil
@property(readonly, nonatomic, nullable) NSNumber *floorsDescended;下樓的大概樓層數(shù), 若設(shè)備不支持則值為nil
@property(readonly, nonatomic, nullable) NSNumber *currentPace NS_AVAILABLE(NA,9_0);對于更新,這將以s / m(每米秒)返回當(dāng)前速度。 如果滿足以下條件,則值為零:1. 資料尚未公布 2. 歷史查詢 3.平臺不支持
@property(readonly, nonatomic, nullable) NSNumber *currentCadence NS_AVAILABLE(NA,9_0);對于更新,這將返回以秒為單位執(zhí)行行走的節(jié)奏。 如果滿足以下條件,則值為零:1. 資料尚未公布 2. 歷史查詢 3.平臺不支持
@property(readonly, nonatomic, nullable) NSNumber *averageActivePace NS_AVAILABLE(NA,10_0);對于更新,這將返回自startPedometerUpdatesFromDate:withHandler :,以s / m(每米秒))的平均活動速度。 對于歷史查詢,這將返回startDate和endDate之間的平均活動速度。 平均主動速度省略了非活動時間,平均步調(diào)從用戶移動。 如果滿足以下條件,則值為零:1. 對于歷史信息查詢,信息無效。例如用戶在開始時間和結(jié)束時間內(nèi)沒有移動 2. 平臺不支持
CMPedometerEvent
@property(readonly, nonatomic) NSDate *date;事件發(fā)生的時間
@property(readonly, nonatomic) CMPedometerEventType type;描述行走活動過渡的事件類型
typedef void (^CMPedometerHandler)(CMPedometerData * __nullable pedometerData, NSError * __nullable error) __TVOS_PROHIBITED;當(dāng)計步器數(shù)據(jù)可用時要調(diào)用的block的類型
typedef void (^CMPedometerEventHandler)(CMPedometerEvent * __nullable pedometerEvent, NSError * __nullable error) NS_AVAILABLE(NA, 10_0) __WATCHOS_AVAILABLE(3_0) __TVOS_PROHIBITED;//當(dāng)計步器事件可用時將被調(diào)用的block的類型。
獲取步數(shù)和距離的方法
1、使用
2、可以使用isStepCountingAvailable或者isDistanceAvailable來檢查設(shè)備是否支持計步功能或距離功能。
3、創(chuàng)建CMPedometer實(shí)例對象
/// 創(chuàng)建計步器對象 if ([CMPedometer isStepCountingAvailable]) { // 8.0 之后可使用 self.pedometer = [[CMPedometer alloc] init]; }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。