From 043dc9acd22ca8fdd4c15baac82484b2b47403b1 Mon Sep 17 00:00:00 2001 From: Core Date: Wed, 13 Nov 2019 04:22:19 +0700 Subject: [PATCH] Fix ios 9 crash (#109) --- .../RCTAppleHealthKit+TypesAndPermissions.m | 328 +++++++++++------- 1 file changed, 212 insertions(+), 116 deletions(-) diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m index a54f03fb..727f05dc 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m @@ -11,127 +11,221 @@ @implementation RCTAppleHealthKit (TypesAndPermissions) - #pragma mark - HealthKit Permissions -- (NSDictionary *)readPermsDict { - NSDictionary *readPerms = @{ - // Characteristic Identifiers - @"DateOfBirth" : [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth], - @"BiologicalSex" : [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex], - // Body Measurements - @"Height" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight], - @"Weight" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass], - @"BodyMass" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass], - @"BodyFatPercentage" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyFatPercentage], - @"BodyMassIndex" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex], - @"LeanBodyMass" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierLeanBodyMass], - // Fitness Identifiers - @"Steps" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount], - @"StepCount" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount], - @"DistanceWalkingRunning" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning], - @"DistanceCycling" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling], - @"DistanceSwimming" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceSwimming], - @"BasalEnergyBurned" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBasalEnergyBurned], - @"ActiveEnergyBurned" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned], - @"FlightsClimbed" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed], - @"NikeFuel" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierNikeFuel], -// @"AppleExerciseTime" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleExerciseTime], - // Nutrition Identifiers - @"DietaryEnergy" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed], - // Vital Signs Identifiers - @"HeartRate" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate], - @"BodyTemperature" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyTemperature], - @"BloodPressureSystolic" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureSystolic], - @"BloodPressureDiastolic" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureDiastolic], - @"RespiratoryRate" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRespiratoryRate], - // Results Identifiers - @"BloodGlucose" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodGlucose], - // Sleep - @"SleepAnalysis" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis], - // Mindfulness - @"MindfulSession" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession], - //workouts - @"Workout" : [HKObjectType workoutType], - }; - return readPerms; +- (nullable HKObjectType *)getReadPermFromText:(nonnull NSString*)key { + // Characteristic Identifiers + if ([@"Height" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight]; + }else if ([@"Weight" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]; + } + + // Body Measurements + if ([@"BodyMass" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]; + }else if ([@"BodyFatPercentage" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyFatPercentage]; + }else if ([@"BodyMassIndex" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex]; + }else if ([@"LeanBodyMass" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierLeanBodyMass]; + } + + // Fitness Identifiers + if ([@"Steps" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; + }else if ([@"StepCount" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; + }else if ([@"DistanceWalkingRunning" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning]; + }else if ([@"DistanceCycling" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling]; + }else if ([@"BasalEnergyBurned" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBasalEnergyBurned]; + }else if ([@"ActiveEnergyBurned" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned]; + }else if ([@"FlightsClimbed" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed]; + }else if ([@"NikeFuel" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierNikeFuel]; + } + +// if ([@"AppleExerciseTime" isEqualToString: key]) { +// return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleExerciseTime]; +// } + + // Nutrition Identifiers + if ([@"DietaryEnergy" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed]; + } + + // Vital Signs Identifiers + if ([@"HeartRate" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]; + }else if ([@"BodyTemperature" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyTemperature]; + }else if ([@"BloodPressureSystolic" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureSystolic]; + }else if ([@"BloodPressureDiastolic" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureDiastolic]; + }else if ([@"RespiratoryRate" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierRespiratoryRate]; + } + + // Results Identifiers + if ([@"BloodGlucose" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodGlucose]; + } + + // Sleep + if ([@"SleepAnalysis" isEqualToString: key]) { + return [HKObjectType quantityTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis]; + } + + // workouts + if ([@"MindfulSession" isEqualToString: key]) { + return [HKObjectType workoutType]; + } + + return nil; } - -- (NSDictionary *)writePermsDict { - NSDictionary *writePerms = @{ - // Body Measurements - @"Height" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight], - @"Weight" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass], - @"BodyMass" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass], - @"BodyFatPercentage" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyFatPercentage], - @"BodyMassIndex" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex], - @"LeanBodyMass" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierLeanBodyMass], - // Fitness Identifiers - @"Steps" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount], - @"StepCount" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount], - @"DistanceWalkingRunning" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning], - @"DistanceCycling" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling], - @"BasalEnergyBurned" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBasalEnergyBurned], - @"ActiveEnergyBurned" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned], - @"FlightsClimbed" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed], - // Nutrition Identifiers - @"Biotin" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryBiotin], - @"Caffeine" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCaffeine], - @"Calcium" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCalcium], - @"Carbohydrates" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCarbohydrates], - @"Chloride" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryChloride], - @"Cholesterol" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCholesterol], - @"Copper" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCopper], - @"EnergyConsumed" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed], - @"FatMonounsaturated" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatMonounsaturated], - @"FatPolyunsaturated" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatPolyunsaturated], - @"FatSaturated" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatSaturated], - @"FatTotal" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatTotal], - @"Fiber" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFiber], - @"Folate" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFolate], - @"Iodine" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIodine], - @"Iron" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIron], - @"Magnesium" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMagnesium], - @"Manganese" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryManganese], - @"Molybdenum" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMolybdenum], - @"Niacin" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryNiacin], - @"PantothenicAcid" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPantothenicAcid], - @"Phosphorus" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPhosphorus], - @"Potassium" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPotassium], - @"Protein" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryProtein], - @"Riboflavin" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryRiboflavin], - @"Selenium" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySelenium], - @"Sodium" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySodium], - @"Sugar" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySugar], - @"Thiamin" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryThiamin], - @"VitaminA" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminA], - @"VitaminB12" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB12], - @"VitaminB6" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB6], - @"VitaminC" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminC], - @"VitaminD" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminD], - @"VitaminE" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminE], - @"VitaminK" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminK], - @"Zinc" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryZinc], - @"Water" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryWater], - // Sleep - @"SleepAnalysis" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis], - // Mindfulness - @"MindfulSession" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession], - }; - return writePerms; +- (nullable HKObjectType *)getWritePermFromText:(nonnull NSString*) key { + // Body Measurements + if([@"Height" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight]; + } else if([@"Weight" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]; + } else if([@"BodyMass" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]; + } else if([@"BodyFatPercentage" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyFatPercentage]; + } else if([@"BodyMassIndex" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex]; + } else if([@"LeanBodyMass" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierLeanBodyMass]; + } + + // Fitness Identifiers + if([@"Steps" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; + } else if([@"StepCount" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; + } else if([@"DistanceWalkingRunning" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning]; + } else if([@"DistanceCycling" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling]; + } else if([@"BasalEnergyBurned" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBasalEnergyBurned]; + } else if([@"ActiveEnergyBurned" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned]; + } else if([@"FlightsClimbed" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed]; + } + + // Nutrition Identifiers + if([@"Biotin" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryBiotin]; + } else if([@"Caffeine" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCaffeine]; + } else if([@"Calcium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCalcium]; + } else if([@"Carbohydrates" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCarbohydrates]; + } else if([@"Chloride" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryChloride]; + } else if([@"Cholesterol" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCholesterol]; + } else if([@"Copper" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCopper]; + } else if([@"EnergyConsumed" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed]; + } else if([@"FatMonounsaturated" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatMonounsaturated]; + } else if([@"FatPolyunsaturated" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatPolyunsaturated]; + } else if([@"FatSaturated" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatSaturated]; + } else if([@"FatTotal" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatTotal]; + } else if([@"Fiber" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFiber]; + } else if([@"Folate" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFolate]; + } else if([@"Iodine" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIodine]; + } else if([@"Iron" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIron]; + } else if([@"Magnesium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMagnesium]; + } else if([@"Manganese" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryManganese]; + } else if([@"Molybdenum" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMolybdenum]; + } else if([@"Niacin" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryNiacin]; + } else if([@"PantothenicAcid" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPantothenicAcid]; + } else if([@"Phosphorus" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPhosphorus]; + } else if([@"Potassium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPotassium]; + } else if([@"Protein" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryProtein]; + } else if([@"Riboflavin" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryRiboflavin]; + } else if([@"Selenium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySelenium]; + } else if([@"Sodium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySodium]; + } else if([@"Sugar" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySugar]; + } else if([@"Thiamin" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryThiamin]; + } else if([@"VitaminA" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminA]; + } else if([@"VitaminB12" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB12]; + } else if([@"VitaminB6" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB6]; + } else if([@"VitaminC" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminC]; + } else if([@"VitaminD" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminD]; + } else if([@"VitaminE" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminE]; + } else if([@"VitaminK" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminK]; + } else if([@"Zinc" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryZinc]; + } else if([@"Water" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryWater]; + } + + // Sleep + if([@"SleepAnalysis" isEqualToString:key]) { + return [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis]; + } + + // Mindfulness + if([@"MindfulSession" isEqualToString:key]) { + return [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession]; + } + return nil; } // Returns HealthKit read permissions from options array - (NSSet *)getReadPermsFromOptions:(NSArray *)options { - NSDictionary *readPermDict = [self readPermsDict]; NSMutableSet *readPermSet = [NSMutableSet setWithCapacity:1]; - + for(int i=0; i<[options count]; i++) { NSString *optionKey = options[i]; - HKObjectType *val = [readPermDict objectForKey:optionKey]; - if(val != nil) { - [readPermSet addObject:val]; + if(optionKey != nil){ + HKObjectType *val = [self getReadPermFromText:optionKey]; + if(val != nil) { + [readPermSet addObject:val]; + } } } return readPermSet; @@ -140,22 +234,24 @@ - (NSSet *)getReadPermsFromOptions:(NSArray *)options { // Returns HealthKit write permissions from options array - (NSSet *)getWritePermsFromOptions:(NSArray *)options { - NSDictionary *writePermDict = [self writePermsDict]; NSMutableSet *writePermSet = [NSMutableSet setWithCapacity:1]; - + for(int i=0; i<[options count]; i++) { NSString *optionKey = options[i]; - HKObjectType *val = [writePermDict objectForKey:optionKey]; - if(val != nil) { - [writePermSet addObject:val]; + if(optionKey != nil){ + HKObjectType *val = [self getWritePermFromText:optionKey]; + if(val != nil) { + [writePermSet addObject:val]; + } } } return writePermSet; } - (HKObjectType *)getWritePermFromString:(NSString *)writePerm { - return [[self writePermsDict] objectForKey:writePerm]; + return [self getWritePermFromText:writePerm]; } + - (NSString *)getAuthorizationStatusString:(HKAuthorizationStatus)status { switch (status) { case HKAuthorizationStatusNotDetermined: