From 84423684a0d60dbd0a499fbb932583e2e7de3df5 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sat, 9 Jul 2016 15:06:39 -0400 Subject: [PATCH] updated getDateOfBirth and getBiologicalSex methods and readme --- ...RCTAppleHealthKit+Methods_Characteristic.m | 17 +++++++++++-- README.md | 20 ++++++++++++---- .../StepsDemo/app/components/home/index.js | 2 ++ .../ios/StepsDemo.xcodeproj/project.pbxproj | 24 +++++++++---------- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Characteristic.m b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Characteristic.m index a874c05..2bd48ac 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Characteristic.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Characteristic.m @@ -38,7 +38,11 @@ return; } - callback(@[[NSNull null], value]); + NSDictionary *response = @{ + @"value" : value, + }; + + callback(@[[NSNull null], response]); } @@ -54,7 +58,16 @@ NSString *dobString = [RCTAppleHealthKit buildISO8601StringFromDate:dob]; - callback(@[[NSNull null], dobString]); + NSDate *now = [NSDate date]; + NSDateComponents *ageComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:dob toDate:now options:NSCalendarWrapComponents]; + NSUInteger ageInYears = ageComponents.year; + + NSDictionary *response = @{ + @"value" : dobString, + @"age" : @(ageInYears), + }; + + callback(@[[NSNull null], response]); } diff --git a/README.md b/README.md index c1f08bf..9555e51 100644 --- a/README.md +++ b/README.md @@ -234,25 +234,35 @@ Get the biological sex (gender). If the `BiologicalSex` read permission is missi | other | HKBiologicalSexOther | ```javascript -AppleHealthKit.getBiologicalSex(null, (err: Object, bioSex: string) => { +AppleHealthKit.getBiologicalSex(null, (err: Object, res: Object) => { if(this._handleHealthKitError(err, 'getBiologicalSex')){ return; } - // use bioSex ... + // res.value will be one of the values from the above table (Value column) ... + // use res.value ... }); ``` ___ #### **`getDateOfBirth`** -Get the date of birth. This will be an ISO timestamp +Get the date of birth. +On success, the callback function will be provided with a `res` object containing dob `value` (ISO timestamp), and `age` in years: ```javascript -AppleHealthKit.getDateOfBirth(null, (err: Object, dob: string) => { +{ + value: '1986-09-01T00:00:00.000-0400', + age: 29 +} +``` + +```javascript +AppleHealthKit.getDateOfBirth(null, (err: Object, res: Object) => { if(this._handleHealthKitError(err, 'getDateOfBirth')){ return; } - // use dob ... (ex: '1986-09-01T12:20:30-04:00') + // use res.value ... (ex: '1986-09-01T12:20:30-04:00') + // use res.age ... (ex: 29) }); ``` diff --git a/examples/StepsDemo/app/components/home/index.js b/examples/StepsDemo/app/components/home/index.js index 35f53b6..ef7c2e9 100644 --- a/examples/StepsDemo/app/components/home/index.js +++ b/examples/StepsDemo/app/components/home/index.js @@ -24,6 +24,8 @@ const HKOPTIONS = { HKPERMS.DistanceWalkingRunning, HKPERMS.FlightsClimbed, HKPERMS.Height, + HKPERMS.DateOfBirth, + HKPERMS.BiologicalSex, ], write: [ HKPERMS.StepCount diff --git a/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj b/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj index 172c566..4fbb732 100644 --- a/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj +++ b/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj @@ -23,7 +23,7 @@ 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 378616B61D257B040027C300 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 378616B51D257B040027C300 /* HealthKit.framework */; }; - 378DCB4D1D3179B500E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB4C1D3179B000E83D06 /* libRCTAppleHealthKit.a */; }; + 378DCB541D31810500E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -91,9 +91,9 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; - 378DCB4B1D3179B000E83D06 /* PBXContainerItemProxy */ = { + 378DCB521D31810200E83D06 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 378DCB471D3179B000E83D06 /* RCTAppleHealthKit.xcodeproj */; + containerPortal = 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */; proxyType = 2; remoteGlobalIDString = 3774C88D1D2092F20000B3F3; remoteInfo = RCTAppleHealthKit; @@ -136,7 +136,7 @@ 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 378616B51D257B040027C300 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; }; 378616B71D257B040027C300 /* StepsDemo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = StepsDemo.entitlements; path = StepsDemo/StepsDemo.entitlements; sourceTree = ""; }; - 378DCB471D3179B000E83D06 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.xcodeproj"; sourceTree = ""; }; + 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.xcodeproj"; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -154,7 +154,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 378DCB4D1D3179B500E83D06 /* libRCTAppleHealthKit.a in Frameworks */, + 378DCB541D31810500E83D06 /* libRCTAppleHealthKit.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 378616B61D257B040027C300 /* HealthKit.framework in Frameworks */, @@ -268,10 +268,10 @@ name = Products; sourceTree = ""; }; - 378DCB481D3179B000E83D06 /* Products */ = { + 378DCB4F1D31810200E83D06 /* Products */ = { isa = PBXGroup; children = ( - 378DCB4C1D3179B000E83D06 /* libRCTAppleHealthKit.a */, + 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */, ); name = Products; sourceTree = ""; @@ -287,7 +287,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 378DCB471D3179B000E83D06 /* RCTAppleHealthKit.xcodeproj */, + 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -411,8 +411,8 @@ ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; }, { - ProductGroup = 378DCB481D3179B000E83D06 /* Products */; - ProjectRef = 378DCB471D3179B000E83D06 /* RCTAppleHealthKit.xcodeproj */; + ProductGroup = 378DCB4F1D31810200E83D06 /* Products */; + ProjectRef = 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */; }, { ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; @@ -516,11 +516,11 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 378DCB4C1D3179B000E83D06 /* libRCTAppleHealthKit.a */ = { + 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRCTAppleHealthKit.a; - remoteRef = 378DCB4B1D3179B000E83D06 /* PBXContainerItemProxy */; + remoteRef = 378DCB521D31810200E83D06 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { -- 2.26.2