From 5ce741b6f56af0f02df44f08f4359684d3216122 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sat, 9 Jul 2016 16:09:08 -0400 Subject: [PATCH] updated Fitness methods to use standardized objects. updated demos to reflect changes --- .../RCTAppleHealthKit+Methods_Fitness.h | 4 +- .../RCTAppleHealthKit+Methods_Fitness.m | 135 +++++++++++------- RCTAppleHealthKit/RCTAppleHealthKit+Queries.h | 2 +- RCTAppleHealthKit/RCTAppleHealthKit+Queries.m | 18 ++- RCTAppleHealthKit/RCTAppleHealthKit.m | 4 +- .../project.pbxproj | 24 ++-- .../StepsDemo/app/components/home/index.js | 4 +- .../ios/StepsDemo.xcodeproj/project.pbxproj | 24 ++-- .../AppIcon-1.appiconset/Contents.json | 62 -------- .../AppIcon-1.appiconset/steps-1.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-2.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-3.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-4.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-5.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-6.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-7.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps-8.png | Bin 1021 -> 0 bytes .../AppIcon-1.appiconset/steps.png | Bin 1021 -> 0 bytes .../AppIcon.appiconset/Contents.json | 78 +++++++++- .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 272 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 471 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 714 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 346 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 660 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 1052 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 465 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 1052 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1576 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 625 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1412 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 1750 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1507 bytes 32 files changed, 204 insertions(+), 151 deletions(-) delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/Contents.json delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-1.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-2.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-3.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-4.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-5.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-6.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-7.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-8.png delete mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h index 68096d9..3a859b0 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h @@ -10,10 +10,10 @@ @interface RCTAppleHealthKit (Methods_Fitness) -- (void)fitness_getStepCountForToday:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +//- (void)fitness_getStepCountForToday:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)fitness_getStepCountOnDay:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; -- (void)fitness_getDailyStepCounts:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +//- (void)fitness_getDailyStepCounts:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)fitness_getDailyStepSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)fitness_saveSteps:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m index 15c6733..f885df4 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m @@ -12,23 +12,23 @@ @implementation RCTAppleHealthKit (Methods_Fitness) -- (void)fitness_getStepCountForToday:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback -{ - HKQuantityType *stepCountType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; - HKUnit *stepsUnit = [HKUnit countUnit]; - - [self fetchSumOfSamplesTodayForType:stepCountType - unit:stepsUnit - completion:^(double totalSteps, NSError *error) { - if (!totalSteps) { - NSLog(@"Either an error occured fetching the user's step count information or none has been stored yet. In your app, try to handle this gracefully."); - callback(@[RCTMakeError(@"Either an error occured fetching the user's step count information or none has been stored yet. In your app, try to handle this gracefully.", nil, nil)]); - return; - } - - callback(@[[NSNull null], @(totalSteps)]); - }]; -} +//- (void)fitness_getStepCountForToday:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +//{ +// HKQuantityType *stepCountType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; +// HKUnit *stepsUnit = [HKUnit countUnit]; +// +// [self fetchSumOfSamplesTodayForType:stepCountType +// unit:stepsUnit +// completion:^(double totalSteps, NSError *error) { +// if (!totalSteps) { +// NSLog(@"Either an error occured fetching the user's step count information or none has been stored yet. In your app, try to handle this gracefully."); +// callback(@[RCTMakeError(@"Either an error occured fetching the user's step count information or none has been stored yet. In your app, try to handle this gracefully.", nil, nil)]); +// return; +// } +// +// callback(@[[NSNull null], @(totalSteps)]); +// }]; +//} - (void)fitness_getStepCountOnDay:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback @@ -46,45 +46,52 @@ [self fetchSumOfSamplesOnDayForType:stepCountType unit:stepsUnit day:date - completion:^(double totalSteps, NSError *error) { - if (!totalSteps) { + completion:^(double value, NSDate *startDate, NSDate *endDate, NSError *error) { + if (!value) { NSLog(@"could not fetch step count for day: %@", error); callback(@[RCTMakeError(@"could not fetch step count for day", error, nil)]); return; } - callback(@[[NSNull null], @(totalSteps)]); - }]; -} - + NSDictionary *response = @{ + @"value" : @(value), + @"startDate" : [RCTAppleHealthKit buildISO8601StringFromDate:startDate], + @"endDate" : [RCTAppleHealthKit buildISO8601StringFromDate:endDate], + }; + callback(@[[NSNull null], response]); + }]; +} -- (void)fitness_getDailyStepCounts:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback -{ - NSDate *startDate = [RCTAppleHealthKit startDateFromOptions:input]; - NSDate *endDate = [RCTAppleHealthKit endDateFromOptionsDefaultNow:input]; - - if(startDate == nil) { - callback(@[RCTMakeError(@"could not parse required startDate from options.startDate", nil, nil)]); - return; - } - HKQuantityType *stepCountType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; - HKUnit *stepsUnit = [HKUnit countUnit]; - [self fetchCumulativeSumStatisticsCollection:stepCountType - unit:stepsUnit - startDate:startDate - endDate:endDate - completion:^(NSArray *arr, NSError *err){ - if (err != nil) { - NSLog(@"error with fetchCumulativeSumStatisticsCollection: %@", err); - callback(@[RCTMakeError(@"error with fetchCumulativeSumStatisticsCollection", err, nil)]); - return; - } - callback(@[[NSNull null], arr]); - }]; -} +// +//- (void)fitness_getDailyStepCounts:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +//{ +// NSDate *startDate = [RCTAppleHealthKit startDateFromOptions:input]; +// NSDate *endDate = [RCTAppleHealthKit endDateFromOptionsDefaultNow:input]; +// +// if(startDate == nil) { +// callback(@[RCTMakeError(@"could not parse required startDate from options.startDate", nil, nil)]); +// return; +// } +// +// HKQuantityType *stepCountType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; +// HKUnit *stepsUnit = [HKUnit countUnit]; +// +// [self fetchCumulativeSumStatisticsCollection:stepCountType +// unit:stepsUnit +// startDate:startDate +// endDate:endDate +// completion:^(NSArray *arr, NSError *err){ +// if (err != nil) { +// NSLog(@"error with fetchCumulativeSumStatisticsCollection: %@", err); +// callback(@[RCTMakeError(@"error with fetchCumulativeSumStatisticsCollection", err, nil)]); +// return; +// } +// callback(@[[NSNull null], arr]); +// }]; +//} @@ -157,13 +164,21 @@ HKQuantityType *quantityType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning]; - [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double distance, NSError *error) { + [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double distance, NSDate *startDate, NSDate *endDate, NSError *error) { if (!distance) { NSLog(@"ERROR getting DistanceWalkingRunning: %@", error); callback(@[RCTMakeError(@"ERROR getting DistanceWalkingRunning", error, nil)]); return; } - callback(@[[NSNull null], @(distance)]); + + NSDictionary *response = @{ + @"value" : @(distance), + @"startDate" : [RCTAppleHealthKit buildISO8601StringFromDate:startDate], + @"endDate" : [RCTAppleHealthKit buildISO8601StringFromDate:endDate], + }; + + + callback(@[[NSNull null], response]); }]; } @@ -175,13 +190,20 @@ HKQuantityType *quantityType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling]; - [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double distance, NSError *error) { + [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double distance, NSDate *startDate, NSDate *endDate, NSError *error) { if (!distance) { NSLog(@"ERROR getting DistanceCycling: %@", error); callback(@[RCTMakeError(@"ERROR getting DistanceCycling", error, nil)]); return; } - callback(@[[NSNull null], @(distance)]); + + NSDictionary *response = @{ + @"value" : @(distance), + @"startDate" : [RCTAppleHealthKit buildISO8601StringFromDate:startDate], + @"endDate" : [RCTAppleHealthKit buildISO8601StringFromDate:endDate], + }; + + callback(@[[NSNull null], response]); }]; } @@ -193,13 +215,20 @@ HKQuantityType *quantityType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed]; - [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double count, NSError *error) { + [self fetchSumOfSamplesOnDayForType:quantityType unit:unit day:date completion:^(double count, NSDate *startDate, NSDate *endDate, NSError *error) { if (!count) { NSLog(@"ERROR getting FlightsClimbed: %@", error); callback(@[RCTMakeError(@"ERROR getting FlightsClimbed", error, nil), @(count)]); return; } - callback(@[[NSNull null], @(count)]); + + NSDictionary *response = @{ + @"value" : @(count), + @"startDate" : [RCTAppleHealthKit buildISO8601StringFromDate:startDate], + @"endDate" : [RCTAppleHealthKit buildISO8601StringFromDate:endDate], + }; + + callback(@[[NSNull null], response]); }]; } diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h index bb7da93..7b91349 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.h @@ -12,7 +12,7 @@ - (void)fetchMostRecentQuantitySampleOfType:(HKQuantityType *)quantityType predicate:(NSPredicate *)predicate completion:(void (^)(HKQuantity *mostRecentQuantity, NSDate *startDate, NSDate *endDate, NSError *error))completion; - (void)fetchSumOfSamplesTodayForType:(HKQuantityType *)quantityType unit:(HKUnit *)unit completion:(void (^)(double, NSError *))completionHandler; -- (void)fetchSumOfSamplesOnDayForType:(HKQuantityType *)quantityType unit:(HKUnit *)unit day:(NSDate *)day completion:(void (^)(double, NSError *))completionHandler; +- (void)fetchSumOfSamplesOnDayForType:(HKQuantityType *)quantityType unit:(HKUnit *)unit day:(NSDate *)day completion:(void (^)(double, NSDate *, NSDate *, NSError *))completionHandler; - (void)fetchCumulativeSumStatisticsCollection:(HKQuantityType *)quantityType unit:(HKUnit *)unit diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m index 867d5b9..491fe62 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m @@ -138,10 +138,16 @@ + + + + + + - (void)fetchSumOfSamplesOnDayForType:(HKQuantityType *)quantityType unit:(HKUnit *)unit day:(NSDate *)day - completion:(void (^)(double, NSError *))completionHandler { + completion:(void (^)(double, NSDate *, NSDate *, NSError *))completionHandler { NSPredicate *predicate = [RCTAppleHealthKit predicateForSamplesOnDay:day]; HKStatisticsQuery *query = [[HKStatisticsQuery alloc] initWithQuantityType:quantityType @@ -150,9 +156,11 @@ completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) { HKQuantity *sum = [result sumQuantity]; + NSDate *startDate = result.startDate; + NSDate *endDate = result.endDate; if (completionHandler) { double value = [sum doubleValueForUnit:unit]; - completionHandler(value, error); + completionHandler(value,startDate, endDate, error); } }]; @@ -162,6 +170,12 @@ + + + + + + - (void)fetchCumulativeSumStatisticsCollection:(HKQuantityType *)quantityType unit:(HKUnit *)unit startDate:(NSDate *)startDate diff --git a/RCTAppleHealthKit/RCTAppleHealthKit.m b/RCTAppleHealthKit/RCTAppleHealthKit.m index 5578806..2105fde 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit.m @@ -7,9 +7,9 @@ // #import "RCTAppleHealthKit.h" -#import "RCTAppleHealthKit+Queries.h" +//#import "RCTAppleHealthKit+Queries.h" #import "RCTAppleHealthKit+TypesAndPermissions.h" -#import "RCTAppleHealthKit+Utils.h" +//#import "RCTAppleHealthKit+Utils.h" #import "RCTAppleHealthKit+Methods_Body.h" #import "RCTAppleHealthKit+Methods_Fitness.h" diff --git a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj b/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj index 4ddcbc9..7e69275 100644 --- a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj +++ b/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj @@ -22,7 +22,7 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 378DCB661D31876000E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB651D31875D00E83D06 /* libRCTAppleHealthKit.a */; }; + 378DCB6D1D318E0C00E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB6C1D318E0700E83D06 /* libRCTAppleHealthKit.a */; }; 37E9B8741D21B52F0090B19B /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E9B8731D21B52F0090B19B /* HealthKit.framework */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -91,9 +91,9 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; - 378DCB641D31875D00E83D06 /* PBXContainerItemProxy */ = { + 378DCB6B1D318E0700E83D06 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 378DCB601D31875D00E83D06 /* RCTAppleHealthKit.xcodeproj */; + containerPortal = 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */; proxyType = 2; remoteGlobalIDString = 3774C88D1D2092F20000B3F3; remoteInfo = RCTAppleHealthKit; @@ -134,7 +134,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = BodyMeasurements/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = BodyMeasurements/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 378DCB601D31875D00E83D06 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.xcodeproj"; sourceTree = ""; }; + 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.xcodeproj"; sourceTree = ""; }; 37E9B8731D21B52F0090B19B /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; }; 37E9B8751D21B52F0090B19B /* BodyMeasurements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = BodyMeasurements.entitlements; path = BodyMeasurements/BodyMeasurements.entitlements; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; @@ -154,7 +154,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 378DCB661D31876000E83D06 /* libRCTAppleHealthKit.a in Frameworks */, + 378DCB6D1D318E0C00E83D06 /* libRCTAppleHealthKit.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 37E9B8741D21B52F0090B19B /* HealthKit.framework in Frameworks */, @@ -268,10 +268,10 @@ name = Products; sourceTree = ""; }; - 378DCB611D31875D00E83D06 /* Products */ = { + 378DCB681D318E0700E83D06 /* Products */ = { isa = PBXGroup; children = ( - 378DCB651D31875D00E83D06 /* libRCTAppleHealthKit.a */, + 378DCB6C1D318E0700E83D06 /* libRCTAppleHealthKit.a */, ); name = Products; sourceTree = ""; @@ -287,7 +287,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 378DCB601D31875D00E83D06 /* RCTAppleHealthKit.xcodeproj */, + 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -411,8 +411,8 @@ ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; }, { - ProductGroup = 378DCB611D31875D00E83D06 /* Products */; - ProjectRef = 378DCB601D31875D00E83D06 /* RCTAppleHealthKit.xcodeproj */; + ProductGroup = 378DCB681D318E0700E83D06 /* Products */; + ProjectRef = 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */; }, { ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; @@ -516,11 +516,11 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 378DCB651D31875D00E83D06 /* libRCTAppleHealthKit.a */ = { + 378DCB6C1D318E0700E83D06 /* libRCTAppleHealthKit.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRCTAppleHealthKit.a; - remoteRef = 378DCB641D31875D00E83D06 /* PBXContainerItemProxy */; + remoteRef = 378DCB6B1D318E0700E83D06 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { diff --git a/examples/StepsDemo/app/components/home/index.js b/examples/StepsDemo/app/components/home/index.js index ef7c2e9..cbb686c 100644 --- a/examples/StepsDemo/app/components/home/index.js +++ b/examples/StepsDemo/app/components/home/index.js @@ -71,11 +71,11 @@ class Home extends Component { * @private */ _fetchStepsToday() { - AppleHealthKit.getStepCount(null, (err, steps) => { + AppleHealthKit.getStepCount(null, (err, res) => { if(this._handleHKError(err, 'getStepCount')){ return; } - this.setState({stepsToday: steps}); + this.setState({stepsToday: res.value}); }); } diff --git a/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj b/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj index 4fbb732..c9481ba 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 */; }; - 378DCB541D31810500E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */; }; + 378DCB741D3190C800E83D06 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 378DCB731D3190C100E83D06 /* libRCTAppleHealthKit.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -91,9 +91,9 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; - 378DCB521D31810200E83D06 /* PBXContainerItemProxy */ = { + 378DCB721D3190C100E83D06 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */; + containerPortal = 378DCB6E1D3190C100E83D06 /* 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 = ""; }; - 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.xcodeproj"; sourceTree = ""; }; + 378DCB6E1D3190C100E83D06 /* 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 = ( - 378DCB541D31810500E83D06 /* libRCTAppleHealthKit.a in Frameworks */, + 378DCB741D3190C800E83D06 /* 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 = ""; }; - 378DCB4F1D31810200E83D06 /* Products */ = { + 378DCB6F1D3190C100E83D06 /* Products */ = { isa = PBXGroup; children = ( - 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */, + 378DCB731D3190C100E83D06 /* libRCTAppleHealthKit.a */, ); name = Products; sourceTree = ""; @@ -287,7 +287,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */, + 378DCB6E1D3190C100E83D06 /* RCTAppleHealthKit.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, @@ -411,8 +411,8 @@ ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; }, { - ProductGroup = 378DCB4F1D31810200E83D06 /* Products */; - ProjectRef = 378DCB4E1D31810200E83D06 /* RCTAppleHealthKit.xcodeproj */; + ProductGroup = 378DCB6F1D3190C100E83D06 /* Products */; + ProjectRef = 378DCB6E1D3190C100E83D06 /* RCTAppleHealthKit.xcodeproj */; }, { ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; @@ -516,11 +516,11 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 378DCB531D31810200E83D06 /* libRCTAppleHealthKit.a */ = { + 378DCB731D3190C100E83D06 /* libRCTAppleHealthKit.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRCTAppleHealthKit.a; - remoteRef = 378DCB521D31810200E83D06 /* PBXContainerItemProxy */; + remoteRef = 378DCB721D3190C100E83D06 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/Contents.json b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/Contents.json deleted file mode 100644 index a08b283..0000000 --- a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/Contents.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "steps-4.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "steps-5.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "steps-6.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "steps-2.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "steps-3.png", - "scale" : "3x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "steps-7.png", - "scale" : "1x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "steps-8.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "steps.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "steps-1.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-1.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon-1.appiconset/steps-1.png deleted file mode 100644 index a32c9940fe139b7d11f60be169ea8614e8139731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1021 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 IIVCg!01d@l<^TWy literal 0 HcmV?d00001 diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..61e7ddd8e20de1d9765ab2514c9083d8f7f6e284 GIT binary patch literal 471 zcmV;|0Vw{7P)vXG|Yqwjy$+h>M@40rn zwbE+-eJPZX0AV?%(jWPfF9D_O+Wm}5Tp9q*5u@fm{+2|LiJPoO8rA^{MGa7f^K|F1;v)(~$ zR-}+vT1xam_k@mlqY3qi4+1qww|ZJ*=6GUl-)KYWBc<%_ki-L*p7}((Bynlpl60Wq zPtSr4rycM6tcY~DOL)QY3ftht8aQ5AaG(cx`L<*h+%lWwT34G*ym5hl|=M>hE z8+M<~SC-xm1g7_WxMesYkB!~8?@qwG?zIwrNY8?3{D&~4On+~~7l3!{r~#(_CR`!h z@I?ND=tpz6dC@e z!3Byvdr!)QL2a|ogRKJ7A(-qC zc_)iQ%kSvCWB82lvSW~hu+yvhGxqQA7KG{s9E?Noa0E902V5M1%OkMZm1ZBV8Qy2b wIZl8%51Rrz^Ai65WqhYMN$`AHAN$XT4?9&4_$eqJ@c;k-07*qoM6N<$f>Vw_VgLXD literal 0 HcmV?d00001 diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..334a19dac0f4b96adee9b3cd10e47adce48e4cb4 GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NV3?%C=ER6$F1_3@Hu0T3fXCe@#fl;b1n5{dJ zgM)*Ulaq^!i<_I9hlhukmzR%^kDs4^@;zQwpdR*;AirRS?Y6!5q*5}^%y|M7y5#BN z7*a8(ccP(ilL1fbW6iYE&Bp3Vt+HlF#hR*WSy5G$ zl`ShIB>wv?1|N66v(3=kc=h7GWQ`rQ*6j+e)T70@TNwIHyQqYl9xz%huARerm$6i3>vgN&9 z{)R=rDj^0w zHj!(FK)nvu&i_9B5j*e4*Ph*;c(>){4&d(pC_luv@tumK8?-ILEfAK z*Jh9t*elDLFUjoOjPjBSuL*35GXR&Y%U^Ua<-@S)0NVa+AuPop0 zp56Tfa06go=;iSATN?$lbl;2)6%s})9Sz#Os`VgTIrWTtb{pY#=G0eQu_<1MS5BP^ z%@c#A_8?oURn5!8t`Y3IWUW+;E)ndy1O!zPxI?g8KID~7=j$+?cD;q|WD^PFS`Fny z+YGB#jb7-Fx+&7pnJWV@+N0Rmz>HNPI2&R3LKcFzBMgIn3dGFv-6g~Q2rv9FEEOHP z5RA79T4~f{(J;zb7^dIgPOG;;nD!W`rk%SS!W#mE*|2Mu*mOZ){fZrE*t>i;0p%=$ zg{BP(@@?17An5{~d4g^!T`IM$hIVQ%G~K{-6@)Vi z>plqwy<)KP+a?qT&5x(rZ>w1&Se%!Xz7Lre2MlFk>(v-hXq}kx00F;d92WWB{0>B< z;gZEvOp;(SK-8?qZwYr!(+f?m;a0q|u!@iVWt|k_l?&nXkCoMcua0zX$agmUwIrRe zR&XWZePZn4@_xUP>tMYPt|YuOZLceiA-F!$es2|A+EmSR;hgeY|LU9Da2xrGnriRW z!sz7K|BZm3G0OT0KQ(HsM7T%k-E--83)p+^-^vRYp>SnVYoX~CJC}JGn@sje7EYEh zz;ah|c6JTgiDa>eZ&Qap91EslZW_+~ zjb7LaOPSv1CX-)Q*=yZ`!azS>KxA6UW>0Bnk72hS{Dvut6EbsAtBc=HESqo>y!5Ti z?4qFdGMKL9a}xs}uFAo{H!-kJ@^j$&9C&>W+?@lDR%kN_2tPPfX)qs+M3yyZ!qxvEwPTb2y+k+WRXXh2`?*br?Vhi1oa5=cgWZ2r WlE_W=wXz5R0000i5_U(V~;jydzLTO;?&&zM` ztu>MOynWXCdsD($8J;WU9$c$5&o=JLqokjj39B>3uQHl^)q3c;S#L(a)jO4S)<4{8 zynk#A{{MTDDWA6Oz4WWn(kh?X%uYm>@!j!0SKA@|CpqcHscY5Seow7P*nQ?sk{Zjwt5=o#M6>0D1LOIEj+hHt z9sK^;z~%1UZ~WTzZaIIfbMkk`9f>|9?|9YRy!%Fny7$Zj9}cLms+(S7{-3328teBZ z>D762c1;y&KYCchH&0hiEMBQmwpRU9_^jfmZc;D5FA>`QWb@%Gy&PF$JAZys%#jjU zzV~<4jf{O(vgfVr{;IDll~IfKt`HHFpPKLbD*r=L+_yJ{?|5Uhe*wdp!PC{xWt~$( F695mx#sUBU literal 0 HcmV?d00001 diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..af9f5bbf9fe0cb3a1de78c00e269d8fffd19253d GIT binary patch literal 1052 zcmV+%1mpXOP) zHj!(FK)nvu&i_9B5j*e4*Ph*;c(>){4&d(pC_luv@tumK8?-ILEfAK z*Jh9t*elDLFUjoOjPjBSuL*35GXR&Y%U^Ua<-@S)0NVa+AuPop0 zp56Tfa06go=;iSATN?$lbl;2)6%s})9Sz#Os`VgTIrWTtb{pY#=G0eQu_<1MS5BP^ z%@c#A_8?oURn5!8t`Y3IWUW+;E)ndy1O!zPxI?g8KID~7=j$+?cD;q|WD^PFS`Fny z+YGB#jb7-Fx+&7pnJWV@+N0Rmz>HNPI2&R3LKcFzBMgIn3dGFv-6g~Q2rv9FEEOHP z5RA79T4~f{(J;zb7^dIgPOG;;nD!W`rk%SS!W#mE*|2Mu*mOZ){fZrE*t>i;0p%=$ zg{BP(@@?17An5{~d4g^!T`IM$hIVQ%G~K{-6@)Vi z>plqwy<)KP+a?qT&5x(rZ>w1&Se%!Xz7Lre2MlFk>(v-hXq}kx00F;d92WWB{0>B< z;gZEvOp;(SK-8?qZwYr!(+f?m;a0q|u!@iVWt|k_l?&nXkCoMcua0zX$agmUwIrRe zR&XWZePZn4@_xUP>tMYPt|YuOZLceiA-F!$es2|A+EmSR;hgeY|LU9Da2xrGnriRW z!sz7K|BZm3G0OT0KQ(HsM7T%k-E--83)p+^-^vRYp>SnVYoX~CJC}JGn@sje7EYEh zz;ah|c6JTgiDa>eZ&Qap91EslZW_+~ zjb7LaOPSv1CX-)Q*=yZ`!azS>KxA6UW>0Bnk72hS{Dvut6EbsAtBc=HESqo>y!5Ti z?4qFdGMKL9a}xs}uFAo{H!-kJ@^j$&9C&>W+?@lDR%kN_2tPPfX)qs+M3yyZ!qxvEwPTb2y+k+WRXXh2`?*br?Vhi1oa5=cgWZ2r WlE_W=wXz5R0000G>cGKQZ!|4v&6C@Hk2s&! zc9*w8zYx$ZllDqLm+7gZHv-z+wL(uN^sWtgDUsX7<4i=iN`4)pFJ*MW3>*D7n=O^U zJCV^bIcWYi`~6wDIG;)Ag^Ug;Fc|aU2k*Lq#tVCRVJmjw5zsQ3*uxT6!uBVM*S}o- zzl4bCPZY1+NMB}@>N@`euiZ$e<#ZEqJalQR*)1t1&`LC#rKR39eYz%SJCrk4H^FEn zJ=vA8wEG8rqLqAYE}@vMX$`g4$s3qGhr>ux7KoiSN54!YB`&o(M2m7`7C`!9Dk*V2 z6v=3~@t(;_lqIEay|S>Dt`w<@eyQk-<_{S6hi1D*jNT|xw2@|wUD41e{V4;2=4dAa zt4k_<0{XH)v>d+XwpKj zUIiPIoKziggE<5trmQ7{Dk5bFP|JJc-a>b>MYr=>c&4J`{?KCS0>eO#fXY%AEhbjr zh?d)buReFO#Sjh}y0Et$ni1(qZ-Fk+(A%I#v=r-b`c@j6Xfy?P;PmNB1l2iG=7G;B zXR^H`2rb1hd`7K5!C9nBv{XdF>C-BG^4uqD=18KULyV4^sn0ZY{G=IyYB7^l7W9f1 zx^*kUrV2VG(0m7Jg~3WelXn*hD~A;*e<5;jIMN4FS7Y_|N**CkcsoQ3xu<9*tBgK8 z-mv<+X0pnNBr@O&uktd4GNosu&spi&E`K;O`MiogQS1;+))}uuS0-mxx1o8k1PK@K z2-!wL69-(Cp*8!_Z3Xuxevu1m1X{D(b6O_nsJw6VU=20=srO1kbE9g1$~E}&H{VmJ z68nRKK_8a(7Aod$Zjd&cm_a`-?RVg@#{25S4uvU?4*EymN6kOi^)E)Bvil(+lnJL{ zDTl5KOStBSQ*wyVd$5<3!)OQ7;<|ovd;eIoX#S;vaSr~@6&z#D2tV88#@jU-*o8ej zwLWCO$OgBz%kQo`1^k%(BK2F_IU3`f^(G9O-gs*pe^Fd*<_8Sym;9x7>c~8j z3j;S~lu?sNe;=UCxPUvi@H916!)KG8(P-Vasom z$(wa3D5f-8@54Go>&Bpc{4+(;9eP8fweGQrt)3;CIR@~7W-4YMXy#nb2b#G%@Ui$h zL^Fr*J_4QTU>lu4X-0Rje*Q&mN}s&!4ivHhR*|SZ8baPXzPhKs}~@Db@qq$*nxe3S7)AVbo19_^8V}L a=l=nNrVAh7?{-H30000sK7pqjfQ=)LXbrFBZmr2)o2H z8!cExVz8iUZn5JQ&2X)NJ=dueu*W*K11wNOiCD9Woe(>d_fYFci&%|V$0UXbX7Vk9 znDN=tS#ERVGI39-3bA?kxu->}A%noE_5`tB2+;iYh|L<(<8$(hq*}XJ#xSZi4`YK5 zYlJ8zhYwD-A`LSz^c_XV&1YG;zLH^gPjWAjtr62Z8!U>lFF$v$a*XD10N>P+ zABJ@v)lSx6FmOMms=-ioa@-KJ`>b{_rfR=KaChR7z-BSNs|b&qrCKf)GCX3lyZ40G zYyp{)(#v!%0c$N*E-xlqG;r-5Etbr8J~X{U2-jImHKvlg8xFBCtr~M##YpFZJ#w+M z;%?izJ5Vs6-f11QQ@#?rAaMsPfsyK!6>zdx0WEnnyw2Rk>;TbrK5P<9YvgRBOd9P{ zoL_Zu+`cI3*4Gl&fSs5_?HNuf$Cb-ql^hqft}y34#pgfU(+WG=vpW~E^z*Gyam=y* z#ZKF>+cqrOhNasuQ^OF(O3#!%MsKSKV~c9^Kk*!{iD6@Q{U7xUW4cb$t*EUB00000 LNkvXXu0mjfA2AKb literal 0 HcmV?d00001 diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3a9528a7c16c0f90a999d1e821bc24778562a7 GIT binary patch literal 1412 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 literal 0 HcmV?d00001 diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bc33d5be0b755c5816cd8db2669ba7d6fcc0bf02 GIT binary patch literal 1507 zcmV<91swW`P)(x&?v$NkzuSab1Zn1d#qjy~E06MubI~(T5 zV~)&=t)pWxFHB{dBQcjLfttUfV=(*1wqM7977oJSrB9E_ z&)*d2LV*hX)cEG`bn!lG12xRak@a{J0jS0_V@G`9JYTUC47o2l1|wrmQ0RZTUl zC@S2Uw1z%d))bmM)KJkz2h~c4CZ~XE^2#fQJ^lfGc6$ichIlP+B>qc05KH{BbFWQ=ty!OF20AB~D>?cE*=-oj~E_?=d@Q-h?Vt z*vOazDVfn}9naP>21Qv&d!L%5iWn5;Kka>VXx!X?8vjCt1{?}oAqkb<`zI%Y!l05+ z=`B^-aGe7!ZPSGYm9|{O^{lbiUaJ4nmJ7`7yrKW%)-YPpQvV+msJ!7AirT-UCXwHo zwDcFVs{ALb)x4N^h|vjDNL6++sa4fXg7Sdb@!VN~p+ipWu{10nGOkhjzXew_-`2S( z3NckEgX0_8$y;Hl{6;klQP-FE3DNYY5GuRY3G|SLG@cWuS>rQ|Scdj_JnvW;LIe$D z=q^>ukCp4U`>kDT@c~;^0-%?+>n~fo);a+W5@-*0r> z9}NKTT&NRhW%gEiLLY%iV(q<%<-Jl0FiEUCz?`@**dx$fgw`C3-SIba`W&QcrXX)` zgclO30I3>b=16?OPD0uLTn2Upy%+UP)yhE)AXH{LwIB!eCxptLxxR&hq7)B3cD4f0 z*iucoK)V!$T6UtVlw$U9cS+W1f~xM8l@u<+ww|m5lJZ9;qB@378$oGL)!>F1=q=ox zxAagCy4+ZsbZ%3YF{Mb?nM){v>}s_riFX7VAHAMOHCiMj&NG75rBR^%4GdWkOG- z+@KiH!6L`HltHn06l(QJj2&h}?+4BtLGh>)C|fSZKscT|LhYKFeIpfKAK~*OHB0`b zN^s4!FU*hhSsL*ReElxu%$mzf{lhC8pp%ew7vlQ+VW^y;Z>J(OKRvY9`}$!x{1m~* zVo2NH-O`|eA9UUYv=E_*A9U3PRNiy+gvy)r=Lo$LYswQUZ@C73&}Q?4*P6ITmwQ6R zJ<7-vDz$!(YpY#CryT14TM(i8J?^;Rt+;C