精华内容
下载资源
问答
  • HealthKit

    2014-12-08 16:40:59
    HealthKit是苹果首次尝试将来自不同源的健康数据进行整合,以统一的形式呈现给用户的做法。比如我们从各个应用里记录的健康和健身相关的信 息,血液、心率、水化、血压、营养、血糖、睡眠、呼吸频率、血氧饱和度和...
    HealthKit是苹果首次尝试将来自不同源的健康数据进行整合,以统一的形式呈现给用户的做法。比如我们从各个应用里记录的健康和健身相关的信 息,血液、心率、水化、血压、营养、血糖、睡眠、呼吸频率、血氧饱和度和体重等,都可以有选择性的开放给第三方应用或者医疗机构,从而获得更加优质和可靠的服务。
    展开全文
  • healthkit-poc 用于测试的 Quick HealthKit PoC 现在不会做太多!
  • iOS HealthKit

    2021-03-28 23:56:05
    HealthKit是苹果提供的一个框架, 用来访问和分享健康和健身数据, HealthKit为健康和健身数据提供了一个中心仓库, 在用户授权后, app可以通过HealthKit store 访问分享这些数据. HealthKit 提供了大量的数据类型和...

    1. 介绍

    HealthKit是苹果提供的一个框架, 用来访问和分享健康和健身数据, HealthKit为健康和健身数据提供了一个中心仓库, 在用户授权后, app可以通过HealthKit store 访问分享这些数据. HealthKit 提供了大量的数据类型和单位, 用不不允许自己创建数据类型和单位,

    2. HealthKit 数据

    1. 特征数据(Characteristic data), 如生日, 血型, 皮肤, 生物性别等, 用户可以直接读取, 但是输入的话必须在健康app中.
    2. 样本数据(Sample data), 大多数的用户健康数据都是通过样本数据进行存储的, 所有的样本类都继承自 HKSample类, 它又是 HKObject类的子类
    3. 训练数据(Workout data): 健身锻炼的数据是通过HKWorkout 进行存储的, HKWorkout也是HKSample的子类
    4. 元数据(source data): 每个样本数据都存储关于数据的来源, HKSourceRevision对象包含app或设备存储的数据. HKDevice对象包含关于产生数据的硬件设备的信息.
    5. 删除的对象: HKDeletedObject 实例用来暂时存储已经被删除的item的UUID. 当一个数据被用户或者其他app删除, 可以用这个对象响应

    3. HKObjects和Sample的属性

    HKObject 是所有HealthKit sample类型的父类, 'HKObject’的所有子类都是不可变的, 属性如下:

    1. UUID: 条目的唯一标识
    2. Metadata: 一个字典, 包含该条目的额外信息, 字典可以包含预设和自定义的key,
    3. Source Revision: sample的来源, 可以是直接把数据存进HealthKit的设备或者app, HealthKit 自动记录每个对象的来源和版本当一条数据存进来的时候, 这个属性只有当这个对象从healthKit store 中取出来的时候有效
    4. Device: 生成数据的硬件设备

    所有的HKSample类都是HKObject的子类, 所有的sample类都是HKSample的子类, 属性如下:

    1. Type: 样本的类型, 如睡眠分析类型, 身高sample, step count sample.
    2. Start date: 样本数据的开始时间
    3. End date: 样本数据的结束时间, 如果样本数据仅仅代表一个时间点的数据, 则结束时间应该和开始时间是一样的, 否则, 结束时间应该晚于开始时间

    sample 对进一步划分为四个子类

    1. Category samples: 可以划分为有限类别的数据
    2. Quantity sample: 可以存储为数值类型的数据, 是最长用的数据类型, 他们包括身高, 体重, 步数, 用户的温度, 脉搏速度等等
    3. Correlation: 包含一个或者多个sample的复合数据, 在iOS8, HealthKit用这个类型的数据来代表食物, 血压等等, 当你创建食物或者血压数据的时候也应该使用者这个类型
    4. Workouts: 训练数据, 代表物理训练, 如跑步, 游泳, 训练数据通常有类型, 时长, 距离, 能量消耗等属性, fine-grained, 你可以将训练数据与一些细粒度的sample关联,

    HealthKit store 是线程安全的, 大多数HealthKit object是不可变的, 一般情况你可以在多线程环境中使用它

    HealthKit的所有回调函数都没有在主线程中执行, 如果你要刷新UI记得切换到主线程

    iphone和apple watcch中的数据会自动同步, 为了节省空间, 手表会定期清除旧数据, iPad没有healthKit

    4. 配置HealthKit

    1. 在app中允许HealthKit

    2. 确保HealthKit在当前手机有效

      if (HKHealthStore.isHealthDataAvailable) {
              self.store = [[HKHealthStore alloc]init];;
          }else {
              NSLog(@"aikesi--当前设备不支持HealthKit");
          }
      
    3. 创建自己的HealthKit store

    4. 请求授权读写数据

    为了保护用户隐私, HealthKit要求对每种数据类型,app必须要申请细粒度的授权, 但是可以不用一次申请完, 要用的时候申请也是可以的

    let allTypes = Set([HKObjectType.workoutType(),
                        HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,
                        HKObjectType.quantityType(forIdentifier: .distanceCycling)!,
                        HKObjectType.quantityType(forIdentifier: .distanceWalkingRunning)!,
                        HKObjectType.quantityType(forIdentifier: .heartRate)!])
    
    healthStore.requestAuthorization(toShare: allTypes, read: allTypes) { (success, error) in
        if !success {
            // Handle the error here.
        }
    }
    
    展开全文
  • healthkit到sqlite 将Apple Healthkit导出zip转换为SQLite数据库 如何安装 $ pip install healthkit-to-sqlite 如何使用 首先,您需要导出Apple HealthKit数据。 在您的iPhone上,打开“健康”应用 点击右上角的...
  • HealthKit详解

    2019-10-09 08:04:10
    1. 导入HealthKit框架 #import <HealthKit/HealthKit.h> 2. 判断设备是否支持HealthKit HealthKit是iOS8加入的API HealthKit在iPad上不可用 通过HKHealthStore类方法 + (BOOL)...

    1. 导入HealthKit框架

    #import <HealthKit/HealthKit.h>
    

    2. 判断设备是否支持HealthKit

    1. HealthKit是iOS8加入的API
    2. HealthKit在iPad上不可用
    通过HKHealthStore类方法 + (BOOL)isHealthDataAvailable;判断设备是否支持HealthKit
    BOOL isSupport = [HKHealthStore isHealthDataAvailable];
    

    3. HKHealthStore初始化,请求用户授权

    HealthKit框架核心是HkHealthStore类,主要对数据进行操作

    通过requestAuthorizationToShareTypes:readTypes:completion:方法来请求HealthKit数据的权限。对每种类型的数据,都必须请求许可来共享和读取。
    HKHealthStore *healthStore = [[HKHealthStore alloc] init];
    NSSet *shareType = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]];
    NSSet *readType = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]];
    [healthStore requestAuthorizationToShareTypes:shareType readTypes:readType completion:^(BOOL success, NSError * _Nullable error) { }]; 
    • 1.第一个参数传入一个NSSet类型数据,告知用户,我的App可能会修改你健康数据库中的这些选项数据。
    • 2.第二个参数也是传入NSSet类型数据,告知用户,我的App可能会从你的数据库中读取以下几项数据。
    • 3.第三个是授权许可回调BOOL值success用于区分是否授权成功(仅用于判断系统是否支持HealthKit),而不是判断用户是允许OR不允许

    4. HKSampleType样本类型

    样本可以细分为五个样本类型,样本的获取调用HKObjectType类中的方法

    1. 数量样本(HKQuantityType)

    这种样本代表一些可以存储为数值的数据。

    调用 + quantityTypeForIdentifier: 方法,样本类型获取
    [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; 
    
    • 身体测量
      1. HKQuantityTypeIdentifierBodyMassIndex  身高体重指数
      2. HKQuantityTypeIdentifierBodyFatPercentage 体脂率
      3. HKQuantityTypeIdentifierHeight 身高
      4. HKQuantityTypeIdentifierBodyMass 体重
      5. HKQuantityTypeIdentifierLeanBodyMass 去脂体重
      
    • 健身数据
      1. HKQuantityTypeIdentifierStepCount  步数
      2. HKQuantityTypeIdentifierDistanceWalkingRunning 步行+跑步距离
      3. HKQuantityTypeIdentifierDistanceCycling 骑车距离
      4. HKQuantityTypeIdentifierBasalEnergyBurned 静息能量 5. HKQuantityTypeIdentifierActiveEnergyBurned 活动能量 6. HKQuantityTypeIdentifierFlightsClimbed 已爬楼层 //不允许share 7. HKQuantityTypeIdentifierNikeFuel NikeFuel 8. HKQuantityTypeIdentifierAppleExerciseTime 锻炼分钟数健身数据 
    • 主要特征
      1. HKQuantityTypeIdentifierHeartRate 心率
      2. HKQuantityTypeIdentifierBodyTemperature  体温
      3. HKQuantityTypeIdentifierBasalBodyTemperature 基础体温
      4. HKQuantityTypeIdentifierBloodPressureSystolic  收缩压
      5. HKQuantityTypeIdentifierBloodPressureDiastolic  舒张压
      6. HKQuantityTypeIdentifierRespiratoryRate  呼吸速率
      
    • 数据结果
      1. HKQuantityTypeIdentifierOxygenSaturation  血氧饱和度
      2. HKQuantityTypeIdentifierPeripheralPerfusionIndex 末梢灌注指数
      3. HKQuantityTypeIdentifierBloodGlucose 血糖
      4. HKQuantityTypeIdentifierNumberOfTimesFallen 摔倒次数
      5. HKQuantityTypeIdentifierElectrodermalActivity  皮电活动
      6. HKQuantityTypeIdentifierInhalerUsage 吸入剂用量
      7. HKQuantityTypeIdentifierBloodAlcoholContent  血液酒精浓度
      8. HKQuantityTypeIdentifierForcedVitalCapacity  最大肺活量|用力肺活量
      9. HKQuantityTypeIdentifierForcedExpiratoryVolume1 第一秒用力呼气量
      10.HKQuantityTypeIdentifierPeakExpiratoryFlowRate 呼气流量峰值
      
    • 营养摄入
      1. HKQuantityTypeIdentifierDietaryFatTotal 总脂肪
      2. HKQuantityTypeIdentifierDietaryFatPolyunsaturated  多元不饱和脂肪
      3. HKQuantityTypeIdentifierDietaryFatMonounsaturated 单元不饱和脂肪
      4. HKQuantityTypeIdentifierDietaryFatSaturated 饱和脂肪 5. HKQuantityTypeIdentifierDietaryCholesterol 膳食胆固醇 6. HKQuantityTypeIdentifierDietarySodium 钠 7. HKQuantityTypeIdentifierDietaryCarbohydrates 碳水化合物 8. HKQuantityTypeIdentifierDietaryFiber 纤维 9. HKQuantityTypeIdentifierDietarySugar 膳食糖 10.HKQuantityTypeIdentifierDietaryEnergyConsumed 膳食能量 11.HKQuantityTypeIdentifierDietaryProtein 蛋白质 12.HKQuantityTypeIdentifierDietaryVitaminA 维生素 A 13.HKQuantityTypeIdentifierDietaryVitaminB6 维生素 B6 14.HKQuantityTypeIdentifierDietaryVitaminB12 维生素 B12 15.HKQuantityTypeIdentifierDietaryVitaminC 维生素 C 16.HKQuantityTypeIdentifierDietaryVitaminD 维生素 D 17.HKQuantityTypeIdentifierDietaryVitaminE 维生素 E 18.HKQuantityTypeIdentifierDietaryVitaminK 维生素 K 19.HKQuantityTypeIdentifierDietaryCalcium 钙 20.HKQuantityTypeIdentifierDietaryIron 铁 21.HKQuantityTypeIdentifierDietaryThiamin 硫铵 22.HKQuantityTypeIdentifierDietaryRiboflavin 核黄素 23.HKQuantityTypeIdentifierDietaryNiacin 烟酸 24.HKQuantityTypeIdentifierDietaryFolate 叶酸 25.HKQuantityTypeIdentifierDietaryBiotin 生物素 26.HKQuantityTypeIdentifierDietaryPantothenicAcid 泛酸 27.HKQuantityTypeIdentifierDietaryPhosphorus 磷 28.HKQuantityTypeIdentifierDietaryIodine 碘 29.HKQuantityTypeIdentifierDietaryMagnesium 镁 30.HKQuantityTypeIdentifierDietaryZinc 锌 31.HKQuantityTypeIdentifierDietarySelenium 硒 32.HKQuantityTypeIdentifierDietaryCopper 铜 33.HKQuantityTypeIdentifierDietaryManganese 锰 34.HKQuantityTypeIdentifierDietaryChromium 铬 35.HKQuantityTypeIdentifierDietaryMolybdenum 钼 36.HKQuantityTypeIdentifierDietaryChloride 氯化物 37.HKQuantityTypeIdentifierDietaryPotassium 钾 38.HKQuantityTypeIdentifierDietaryCaffeine 咖啡因 39.HKQuantityTypeIdentifierDietaryWater 水 40.HKQuantityTypeIdentifierUVExposure 紫外线指数 
    2. 类别样本(HKCategoryType)

    这种样本代表一些可以被分为有限种类的数据。

    调用 + categoryTypeForIdentifier: 方法,样本类型获取
    [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis];
    
    • 生殖健康
      1. HKCategoryTypeIdentifierSleepAnalysis 睡眠分析
      2. HKCategoryTypeIdentifierCervicalMucusQuality 宫颈粘液质量
      3. HKCategoryTypeIdentifierOvulationTestResult 排卵测试结果
      4. HKCategoryTypeIdentifierMenstrualFlow 月经 5. HKCategoryTypeIdentifierIntermenstrualBleeding 点滴出血 6. HKCategoryTypeIdentifierSexualActivity 性行为 //不允许share 7. HKCategoryTypeIdentifierAppleStandHour 站立小时 
    3. 特征样本(HKCharacteristicType)

    这种样本代表一些基本不变的数据

    调用 + characteristicTypeForIdentifier: 方法,样本类型获取
    [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex];
    
    • 本人信息
      //不允许share
      1. HKCharacteristicTypeIdentifierBiologicalSex 性别 
      2. HKCharacteristicTypeIdentifierBloodType 血型 
      3. HKCharacteristicTypeIdentifierDateOfBirth 出生日期 4. HKCharacteristicTypeIdentifierFitzpatrickSkinType 日光反应型皮肤类型 
    4. Correlation(HKCorrelationType)

    这种样本代表复合数据,包含一个或多个样本

    • 样本类型不允许share和read(枚举)
      //不允许share And read
      1.HKCorrelationTypeIdentifierBloodPressure 血压   
      2.HKCorrelationTypeIdentifierFood 食物
      
    5. Workout(HKWorkoutType)

    Workout代表某些物理活动,像跑步、游泳,甚至游戏。

    调用 + workoutType 方法,样本类型获取
    [HKObjectType workoutType];
    
    枚举
    1.HKWorkoutTypeIdentifier  体能训练 
    
    6. activitySummaryType(健身记录)获取

    包含(活动,锻炼,站立)

    调用 + activitySummaryType 方法,样本类型获取
    [HKObjectType activitySummaryType];



    转自:https://www.jianshu.com/p/10accd63cae7

     

    不同的健康应用需求大致可以分为三种

    1.统计分析 (Statistical Analysis)
    2.允许用户输入设备(Enter Information)
    3.允许来自第三方的设备数据(Application From Health Providers)
    为此,apple开发了Healthkit来处理这些需求

    1. Data in HealthKit

    在不同的国家,对同一个概念有着不同的度量单位。所以在HealthKit中,提出了HKUnit的概念。他就是为了帮助开发者做单位转换的。HKUnit代表了一个在度量标准或单位系统中的特定单位

    1.1 HKUnit
    HKUnit *g = [HKUnit gramUnit]; //克
    HKUnit *dL = [HkUnit literUnitWithMetricPrefix:HKMetricPrefixDeci];//分升
    HKUnit *gPerdL = [g unitDivideByUnit:dL]; // 克/分升  g/dL
    //对于复杂的组合单位,也可以使用这种方式创建 HKUnit *gPerdL = [HKUnit unitFromString:@"g/dL"]; 
    1.2 HKQuantity

    他可以用于进行单位转换

    HKUnit *gramUnit = [HKUnit gramUnit];
    HKQuantity *grams = [HKQuantity quantityWithUnit:gramUnit doubleValue:20]; //20克
    double kg = [grams doubleValueForUnit:[HKUnit unitFormString:@"kg"]];//转换为了0.02kg 

    但是不是所有的单位都是可以这样进行转换的,如果转化为一个不兼容的单位时,就会报错。所以我们可以使用下面的方法进行预判断。

    BOOL kgCompatible = [grams isCompatibleWithUnit:[HKUnit unitFromString:@"kg"]]; // YES
    BOOL kgCalComtible = [grams isCompatibleWithUnit:[HKUnit kilocalorieUnit]];  // NO 

    也就是说HKQuantity就是带有单位的数量值

    1.3 HKObjectType

    Object types代表了HealthKit中的所有数据类型。在HealthKit中有超过60种类型,大多数的类型都会整合到他自己类中。所有的这些类,都是继承于HKObjectType。所有的类分为两个基本大类。(1)HKCharacteristicType:他代表一种不会改变的一些类型,比如生日、性别等。(2)HKSampleType:代表会随时间改变的类型,它们能在一定特定的时间点里获取的到类型的样本。在这个类型下面又分为两种类型
    1>HKQuantityType ,比如血压
    2>HKCategoryType,代表可以分类的类型,比如睡眠分析。具体结构如图1

     
    图1.png

    KHObjectType的创建:每一种类型都有的他自己的identifier。当然你不能创建自己的objectType和对应的identifier。但是我们可以理解下他的构造规则。

    HKQuantityTypeIdentifierHeartRate
    HKQuantityTypeIdentifier:代表他属于那种类型的数据
    HeartRate :代表他的名字

    只要你有了某个类型的identifier,你就可以使用构造方法进行创建

    +(HKQuantityType *)quantityTypeForIdentifier:(NSString   *)identifier;
    +(HKCategoryType *)categoryTypeForIdentifier:(NSString *)identifier;
    +(HKCharacteristicType *)characteristicTypeForIdentifier:(NSString *)identifier;
    //显然三种构造方法,对应了三种不同的类型
    
    1.4 HKObject

    在HealthKit中的所有存储数据都是HKObject的子类,具体结构如下图2


     
    图2

    HKQuantitySample有quantityType和quantity两个属性。qantityType代表了这个对象数据属于那种类型,quantity代表了具体的数值和单位。quantity的单位和quantityType需要匹配。每一个quantity type都对应了一种特定的单位。如果没有对应,则会抛出异常。如图3

     
    图3.png

    HKCategorySample和HKQuantitySample类似,他也有categoryType代表他属于那种类型的数据,同时他有value值。这里要记住categoryType是一种可以的数值都是可以被枚举出来的。所以,每种类型都有一套对应的枚举值,value值必须对应其中的一个数值,如果一种出现了异常的数值,就会报错。见图4

     
    图4.png

    这些类型都是继承自HKSample,因为sample一种可以在特定时间进行取样的的数据,所以,他有startDate和endDate。对于有些数据,比如果你想获取体重这种及时性非常高的值(总不能获取一段时间的体重吧),所以他的startDate和endDate是相同的,而对于那种读取一定时间内的数值的数据类型,他们的startDate和endDate会不一样。每种sample也都有sampleType属性,他的实际类型和子类的type类型相同。如图5

     
    图5.png

    以上者这些都是继承于HKObject类型,每个Objec类型都有一个UUID类型的属性,他是这个sample的唯一标识。他也有source属性,他记录了数据的来源。metadata对象是NSDictionary类型的属性,所以可以在里面存放任何你想存放的数据,这个属性主要是为了扩展准备的。苹果也开发者准备了一些metadatakey。如图6

     
    图6.png

    Create an HKObject

    NSString * identifier = HKQuantityTypeIdentifierBodyTemperature;
    HKquantityType * tempType = [HKObjectType quantityTypeForIdentifier:identifier];
    HKQuantity * myTemp = [HKQuantity quantityWithUnit:                 [HKUnit degreeFahrenheiUnit] doubleValue:98.6];
    NSDictionary *meta = @{HKMetadataKeyBodyTemperatureSensorLocation : @(HKBodyTemperatureSensorLocationEar)};
    HKQuantitySample *temperatureSample = [HKQuantitySample quantitySampleWithType:tempType
                                                                      quantity:myTemp
                                                                     startDate:[NSDate date]
                                                                       endDate:[NSDate date] metadate:meta]; 

    </br>

    2. Save Data

    self.store = [[HKHealthStore alloc] init];
    ...
    HKQuantitySample *mySample = [self newSample];
    [self.store saveObject:mySample withCompletion:^(BOOL success,NSError *error){ if (success) { NSLog(@"object saved!"); } }]; 

    </br>

    3 Ask For Data

    3.1 Characteristics

    前面讲到,HKCharacteristicType是一种基本不变的数据类型,所以我们可以直接去获取对应的数据,比如,生日、血型等

    NSError *error;
    NSDate *dateOfBirth = [self.store dateOfBirthWithError:&error];
    
    3.2 Queries

    所有的Query都继承自HKQuery

    @interface HKQuery
    //注定要检索的数据类型
    @property (readonly) HKSampleType *sampleType //过滤返回的数据 @Property (readonly) NSPredicate *predicate @end 创建Predicate的几种方式 //1.直接是使用构造方法 [NSPredicate predicateWithFormat:@"%K > %@", HKPredicateKeyPathQuantity,weight]; //2.更加简便的方式 NSPredicateOperatorType greaterThan = NSGreaterThanPredicateOperatorType; [HKQuery perdicateForQuantitySampleWithOperatorType:greaterThan quantity:weight]; 
    3.2.1 HKSampleQuery

    Limit:每个query都有个limit值,他指定了请求返回值的数量,如果你不想限制检索的结果,你可以设置limit值为HKObjectQueryNoLimit。
    Sort Order:决定返回的数据的排列顺序的数组。

    //Code demo
    HKQuantityType *bloodSugar = ...
    NSString *endKey = HKSampleSortIdentifierEndDate;
    NSSortDescriptor *endDate = [NSSortDescriptor sortDescriptorWithKey:endKey ascending:NO]; HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:bloodSugar perdicate:nil sortDescriptor:@[endDate] resultsHandle:^(HKSampleQuery * query, NSArray *results, NSError *error) { HKQuantitySample *sample = [results lastObject]; NSLog(@"Sample: %@",sample); }] 
    3.2.2 HKObserverQuery

    他会监听数据库中的数据改变。所以当一个新的数据被添加或移除的时候都会被调用。

    HKQuantityType *bloodSugar = ...
    HKObserverQuery *query;
    query = [HKObserveQuery alloc]   initWithSampleType:bloodSugar
                                  perdicate:nil
                                  updateHandler:^(HKObserverQuery *query,
                                                      HKObserverCompletionHandler handler,
                                                  NSError *error)
    {
      NSLog(@"Updated");
    }
    
    3.2.3 HKAnchoredObectQuery

    Anchor是你见的最后一条数据,当anchor为0时,表示还没有设置anchor,当每一次回调的时候会返回给你一个新的anchor

    self.lastAnchor = 0
    ...
    HKQuantityType *bloodSugar = ...
    HKAnchoredObjectQuery *query;
    query = [[HKAnchoredObjectQuery alloc] initWithType:bloodSugar 
                                         perdicate:nil
                                            anchor:self.lastAnchor
                                             limit:HKObjectQueryLimit
                                  completionHandler:^(HKAnchoredObjectQuery *query,
                                                                    NSArray *results, NSUInter newAnchor, NSError *error) { self.lastAnchor = newAnchor; }]; 

    </br>

    4. executeQuery

    @interface HKHealthStore: NSObject
    - (void)executeQuery:(HKQuery *)query; - (void)stopQuery:(HKQuery *)query; @end 

    stopQuery方法可以在任何时候调用,他回取消当前的检索操作,并阻止其回调。你可以调用任意次数的stopQuery,但是只能在上一个query结束前,调用一次query。通常情况下,检索执行一次就会停止。但是像ObserverQuery这样的long runing query(这里还是原文比较有味道)需要手动去停止。
    </br>

    5.Asking for Statistics

    HKStatistics
    一个HKStatistics对象是各种统计数据的集合,比如sum、min、max 和 average。
    你可以统计所有的数据,或者只统计特定来源的数据
    ⚠️注意,Statstics只对quantity类型的数据有效。
    这里将数据分为离散数据(discrete)和聚合数据(cumulative)
    离散数据:比如身高、体重、血压等
    聚合数据:比如步数、燃烧的脂肪量

    区别:前者是单次取样获取的有效数据,后者是持续取样的到一段时间的累加的数据

    HKStatisticsQuery

    HKQuantityType *stepCount = ...
    NSPredicate *today = ...
    HKStatisticsOptions sumOptions =       HKStaticsOptionCumulativeSum;
    HKStatisticsQuery *query;
    query = [HKStatisticsQuery alloc] initWithQuantityType:stepCount
                                  quantitySamplePerdicate:today
                                  options:sumOptions
                                  completionHandler:^(HKStaticsQuery *query,
                                                      HKStatics *result,
                                                      NSError *error)
    {
      HKQuantity  *sum = [result sumQuantity];
    } 
    

    HKStaticsCollectiion

    @interface HKStatisticsCollection:NSObject
    - (NSArray *)statistics - (HKStatistics *)statisticsForDate:(NSDate *)date; - (void)enumberateStatisticsFromDate:(NSDate *)startDate toDate:(NSDate *)endDate block:(void(^)(HKStatistics *stats,BOOL *stop))block; @end 

    </br>

    6.Privacy and Permissions

    //请求授权
    - (void)requestAuthorizationToShareTypes:(NSSet *)typesToShare
                               readTypes:(NSSet *)typesToRead
                              completion:(void(^)(BOOL success, NSError *error))completion; //监测授权情况 typedef NS_ENUM(NSInteger, HKAuthorizationStatus) { HKAuthorizationStatusNotDetermined = 0, HKAuthorizationStatusSharingDenied, HKAuthorizationStatusSharingAuthorized, } - (HKAuthrizationStatus)authorizationStatusForType: (HKObjectType *)type 

    </br>

    7.Localization

    NSFormatter 能帮助开发者进行本地化处理

    NSnumberFormatter
    NSDateFormatter
    NSByteCountFormatter
    
    NSMassFormatter
    NSLengthFormatter NSEnergyFormatter //Code demo NSMassFormatter *formatter = [[NSMassFormatter alloc] init] formatter.forPersonMassUse = YES; HKQuantity * weight = ... double weightKg = [weight doubleValueForUnit:[HKUnit unitFromString:@"kg"]]; NSString *localizedString = [formatter stringFromKilograms:weightInKg];



    转自:https://www.jianshu.com/p/349d599c1833

    转载于:https://www.cnblogs.com/yang-shuai/p/8193558.html

    展开全文
  • React本机Apple Healthkit 用于与Apple Healthkit数据进行交互的React Native桥接模块。 检出DEMO应用程序。( ) 安装(React Native> = 0.40) 从npm安装[rn-apple-healthkit]软件包: 运行npm install rn-...
  • 艾比保健包 由HealthKit提供动力的月经周期追踪器 一个非常简单的周期跟踪器,使用HealthKit来存储数据。
  • Introducing HealthKit

    2014-06-11 11:12:55
    HealthKit is a brand new framework that centralizes the data storage of personal health information. Learn from the framework authors how to save, query, and interpret health data to make your apps ...
  • 不推荐使用 注意-该项目并未得到积极维护,因此不推荐...React本机Apple Healthkit 用于与Apple HealthKit进行交互的React Native桥接模块。 。 致谢 该项目已由多个开发人员维护。 我们想(但不仅限于)以下贡献者:
  • HealthKit框架

    2016-07-04 14:38:00
    HealthKit框架相关资料 链接: HealthKit框架参考 HealthKit开发快速入门教程之HealthKit数据的操作 HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发快速入门教程大学霸内部教程 ...
    展开全文
  • Healthkit示例,演示如何授权,读取和写入HealthKit。 授权 成功后,您可以重新加载父视图控制器并重新加载将要读取的任何数据。 - (void)authorize:(void (^)(BOOL success))completion; 读 出生日期(MM-dd-yyyy...
  • HealthKit开发教程之HealthKit的复合数据
  • HealthKit开发教程之HealthKit的辅助数据
  • HealthKit框架简介

    2020-10-14 14:54:58
    HealthKit框架 1、版本限制 iOS8+,watchOS2.0+,Mac Catalyst 13.0+ 2、作用 为iPhone和watch提供健康相关的数据,但是需要经过用户的授权,app才可以和HealthKit交互,获取或更新数据 3、设计开发时注意 需要经过...
  • HealthKit(iOS源代码)

    2021-03-16 21:29:29
    来源: github/HealthKit Licence: MIT 作者: demo of using HealthKit,add foot steps for wechat sports for example. 使用了 HealthKit 的 demo,demo 完成的功能为增加健康 app 中的步数统计。
  • iOS 封装Healthkit

    2019-08-20 12:21:20
    1、新建HealthManager继承于NSObject 2、HealthManager.h #import <Foundation/Foundation.h>...HealthKit/HealthKit.h> typedef long long long64; @interface HealthManager : NSObject @property ...
  • healthkit简介

    2015-08-30 14:05:52
    HealthKit 作为一个全新的健康应用平台,虽然看起来发展空间极大,可苹果貌似不希望把技术都攥在自己手里开发配套产品,因为无论从成本到周期,都是一个不小的工程。所以苹果很聪明的选择不自主生产硬件,改为合作模式。...
  • HealthKit简单使用

    千次阅读 2017-03-06 14:47:26
    HealthKit简单介绍目前很多App都会有访问健康数据的需求,那么我们就不得不使用HealthKitHealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据。HealthKit管理从不同来源获得的数据,并根据用户的...
  • HealthKit 初试

    2014-10-20 18:19:02
    想要做HealthKit,电脑上安装的profile的APP ID 必须包含HealthKit服务。 先来做个测试的。 在developer中新建一个App ID, 选择App ID Suffix —> Explicit APP ID ,一定要输入全名的,不能带*号 —> ...
  • HealthKit是iOS8中的新的API,它提供了一种优雅的方式来获取和存储用户的健康数据。在本篇HealthKit教程中,你不仅能学到许多关于HealthKit的知识,更能创建一个简单地记录用户信息的App。HealthKit是iOS8中的新的...
  • HealthKit的使用

    2019-10-05 02:43:13
    一、项目中关联HealthKit框架 1.在Capabilities选项中打开HealthyKit选项 HealthKit关联路径 首先填写好你项目的Bundle Identifier并且选好Team(这两个东西最好事先设置好,以免之后又得重新关联),然后在项目...
  • HealthKit开发快速入门教程之HealthKit数据的操作
  • HealthKit开发教程之HealthKit的主要类型数据
  • HealthKit Swift 教程: 开始

    千次阅读 2017-10-24 14:06:33
    原文:HealthKit Tutorial with Swift: Workouts 作者:Ted Bendixson 译者:kmyhy 更新说明:本教程由 Ted Bendixson 升级至 Swift 4、Xcode 9 及 iOS 11。原教程作者是Ernesto García。 HealthKit 从 iOS ...
  • 如何使用HealthKit 表示如何使用healthkit的示例,两个功能是HKQuantityType和HKCharacteristicType。这很容易 Healthkit的用法可以帮助您轻松使用它。必须注意的两件事。首先是包含性别,生日等的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,614
精华内容 645
关键字:

healthkit