diff --git a/RCTAppleHealthKit.xcodeproj/project.pbxproj b/RCTAppleHealthKit.xcodeproj/project.pbxproj index 247f7efe650ff9962bc5e3f520a89c7f0cc9eaab..0f9d512a7b3846fb76126d331d4754b013b40809 100644 --- a/RCTAppleHealthKit.xcodeproj/project.pbxproj +++ b/RCTAppleHealthKit.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 3774C8D71D20C65F0000B3F3 /* RCTAppleHealthKit+Methods_Fitness.m in Sources */ = {isa = PBXBuildFile; fileRef = 3774C8D61D20C65F0000B3F3 /* RCTAppleHealthKit+Methods_Fitness.m */; }; 377D44F31D247D0A004E35CB /* RCTAppleHealthKit+Methods_Characteristic.m in Sources */ = {isa = PBXBuildFile; fileRef = 377D44F21D247D0A004E35CB /* RCTAppleHealthKit+Methods_Characteristic.m */; }; 37837E7D1DCFE270000201A0 /* RCTAppleHealthKit+Methods_Sleep.m in Sources */ = {isa = PBXBuildFile; fileRef = 37837E7C1DCFE270000201A0 /* RCTAppleHealthKit+Methods_Sleep.m */; }; + 61232F931E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.m in Sources */ = {isa = PBXBuildFile; fileRef = 61232F921E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.m */; }; 64C42D4A1D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.m in Sources */ = {isa = PBXBuildFile; fileRef = 64C42D491D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.m */; }; 64E0E73F1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E0E73E1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.m */; }; /* End PBXBuildFile section */ @@ -51,6 +52,8 @@ 377D44F21D247D0A004E35CB /* RCTAppleHealthKit+Methods_Characteristic.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTAppleHealthKit+Methods_Characteristic.m"; sourceTree = ""; }; 37837E7B1DCFE270000201A0 /* RCTAppleHealthKit+Methods_Sleep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTAppleHealthKit+Methods_Sleep.h"; sourceTree = ""; }; 37837E7C1DCFE270000201A0 /* RCTAppleHealthKit+Methods_Sleep.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTAppleHealthKit+Methods_Sleep.m"; sourceTree = ""; }; + 61232F911E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTAppleHealthKit+Methods_Mindfulness.h"; sourceTree = ""; }; + 61232F921E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTAppleHealthKit+Methods_Mindfulness.m"; sourceTree = ""; }; 64C42D481D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTAppleHealthKit+Methods_Vitals.h"; sourceTree = ""; }; 64C42D491D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "RCTAppleHealthKit+Methods_Vitals.m"; sourceTree = ""; }; 64E0E73D1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RCTAppleHealthKit+Methods_Results.h"; sourceTree = ""; }; @@ -87,6 +90,8 @@ 3774C88F1D2092F20000B3F3 /* RCTAppleHealthKit */ = { isa = PBXGroup; children = ( + 61232F911E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.h */, + 61232F921E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.m */, 64E0E73D1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.h */, 64E0E73E1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.m */, 64C42D481D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.h */, @@ -171,6 +176,7 @@ 3774C8A11D20A6B90000B3F3 /* RCTAppleHealthKit+Utils.m in Sources */, 37837E7D1DCFE270000201A0 /* RCTAppleHealthKit+Methods_Sleep.m in Sources */, 3774C8D41D20C6390000B3F3 /* RCTAppleHealthKit+Methods_Body.m in Sources */, + 61232F931E303758000A5026 /* RCTAppleHealthKit+Methods_Mindfulness.m in Sources */, 64E0E73F1D37947B00EAB905 /* RCTAppleHealthKit+Methods_Results.m in Sources */, 64C42D4A1D351A8800A0A8F7 /* RCTAppleHealthKit+Methods_Vitals.m in Sources */, 3774C8931D2092F20000B3F3 /* RCTAppleHealthKit.m in Sources */, diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.h b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.h new file mode 100644 index 0000000000000000000000000000000000000000..ac2f17cfc80b8d134f07c75260c2130daf18c83a --- /dev/null +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.h @@ -0,0 +1,13 @@ +// +// RCTAppleHealthKit+Methods_Mindfulness.h +// RCTAppleHealthKit +// +// + +#import "RCTAppleHealthKit.h" + +@interface RCTAppleHealthKit (Methods_Mindfulness) + +- (void)mindfulness_saveMindfulSession:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.m b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.m new file mode 100644 index 0000000000000000000000000000000000000000..b14ef8137a7bc7618f8de087aaf906137d3a0a46 --- /dev/null +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Mindfulness.m @@ -0,0 +1,42 @@ +// +// RCTAppleHealthKit+Methods_Mindfulness.m +// RCTAppleHealthKit +// +// + + +#import "RCTAppleHealthKit+Methods_Mindfulness.h" +#import "RCTAppleHealthKit+Queries.h" +#import "RCTAppleHealthKit+Utils.h" + +@implementation RCTAppleHealthKit (Methods_Sleep) + + +- (void)mindfulness_saveMindfulSession:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + double value = [RCTAppleHealthKit doubleFromOptions:input key:@"value" withDefault:(double)0]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + + if(startDate == nil || endDate == nil){ + callback(@[RCTMakeError(@"startDate and endDate are required in options", nil, nil)]); + return; + } + + HKCategoryType *type = [HKCategoryType categoryTypeForIdentifier: HKCategoryTypeIdentifierMindfulSession]; + HKCategorySample *sample = [HKCategorySample categorySampleWithType:type value:value startDate:startDate endDate:endDate]; + + + [self.healthStore saveObject:sample withCompletion:^(BOOL success, NSError *error) { + if (!success) { + NSLog(@"An error occured saving the mindful session sample %@. The error was: %@.", sample, error); + callback(@[RCTMakeError(@"An error occured saving the mindful session sample", error, nil)]); + return; + } + callback(@[[NSNull null], @(value)]); + }]; + +} + + +@end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m index e050dabc23a4993c94fbc853d0c086e65d809509..b22e6f346770c9153c0223fb5006e186592aff6f 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m @@ -34,7 +34,7 @@ @"ActiveEnergyBurned" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierActiveEnergyBurned], @"FlightsClimbed" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed], @"NikeFuel" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierNikeFuel], - @"AppleExerciseTime" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleExerciseTime], +// @"AppleExerciseTime" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierAppleExerciseTime], // Nutrition Identifiers @"DietaryEnergy" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed], // Vital Signs Identifiers @@ -47,6 +47,8 @@ @"BloodGlucose" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodGlucose], // Sleep @"SleepAnalysis" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis], + // Mindfulness + @"MindfulSession" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession], }; return readPerms; } @@ -73,6 +75,8 @@ @"DietaryEnergy" : [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed], // Sleep @"SleepAnalysis" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis], + // Mindfulness + @"MindfulSession" : [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession], }; return writePerms; } diff --git a/RCTAppleHealthKit/RCTAppleHealthKit.m b/RCTAppleHealthKit/RCTAppleHealthKit.m index 3a389cea4dcb9afe8448a3a476c45fc8c16b0118..dbe76450fc3eead55c60f3cff62f2fd8e642abb5 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit.m @@ -15,6 +15,7 @@ #import "RCTAppleHealthKit+Methods_Vitals.h" #import "RCTAppleHealthKit+Methods_Results.h" #import "RCTAppleHealthKit+Methods_Sleep.h" +#import "RCTAppleHealthKit+Methods_Mindfulness.h" #import #import @@ -164,6 +165,11 @@ RCT_EXPORT_METHOD(getInfo:(NSDictionary *)input callback:(RCTResponseSenderBlock [self getModuleInfo:input callback:callback]; } +RCT_EXPORT_METHOD(saveMindfulSession:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self mindfulness_saveMindfulSession:input callback:callback]; +} + - (void)isHealthKitAvailable:(RCTResponseSenderBlock)callback { diff --git a/README.md b/README.md index 847354b9fa882f166b5abca5dde2c2e9136c95a4..586b61d9e39f0ab4f0d8a0d2371ce44c6160b003 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,991 @@ -# New Direction -> *This package is undergoing a [new direction](https://github.com/GregWilson/react-native-apple-healthkit/pull/38).* -> *Use at your own risk* -## New Development -[rn-apple-healthkit](https://github.com/terrillo/rn-apple-healthkit) +# React Native Apple Healthkit +A React Native bridge module for interacting with [Apple Healthkit] data. + +## Table of Contents + * [Getting Started](#getting-started) + * [Installation](#installation) + * [Usage](#usage) + * [Documentation](#documentation) + * [Permissions](#permissions) + * [Methods](#methods) + * [isAvailable](#isavailable) + * [initHealthKit](#initHealthKit) + * [getBiologicalSex](#getbiologicalsex) + * [getDateOfBirth](#getdateofbirth) + * [getStepCount](#getstepcount) + * [getDailyStepCountSamples](#getdailystepcountsamples) + * [initStepCountObserver](#initstepcountobserver) + * [saveSteps](#savesteps) + * [getDistanceWalkingRunning](#getdistancewalkingrunning) + * [getDistanceCycling](#getdistancecycling) + * [getFlightsClimbed](#getflightsclimbed) + * [getLatestWeight](#getlatestweight) + * [getWeightSamples](#getweightsamples) + * [saveWeight](#saveweight) + * [getLatestHeight](#getlatestheight) + * [getHeightSamples](#getheightsamples) + * [saveHeight](#saveheight) + * [getLatestBmi](#getlatestbmi) + * [saveBmi](#savebmi) + * [getLatestBodyFatPercentage](#getlatestbodyfatpercentage) + * [getLatestLeanBodyMass](#getlatestleanbodymass) + * [getHeartRateSamples](#getheartratesamples) + * [getBodyTemperatureSamples](#getbodytemperaturesamples) + * [getBloodPressureSamples](#getbloodpressuresamples) + * [getRespiratoryRateSamples](#getrespiratoryratesamples) + * [getBloodGlucoseSamples](#getbloodglucosesamples) + * [getSleepSamples](#getsleepsamples) + * [saveMindfulSession](#saveMindfulSession) + +## References +- Apple Healthkit Documentation [https://developer.apple.com/Healthkit/](https://developer.apple.com/Healthkit/) + +## Getting started + +### Installation + +Install the [rn-apple-healthkit] package from npm: + +- Run `npm install rn-apple-healthkit --save` +- Run `react-native link rn-apple-healthkit` + +Update `info.plist` in your React Native project +``` +NSHealthShareUsageDescription +Read and understand health data. +NSHealthUpdateUsageDescription +Share workout data with other apps. +``` + +### Manual Installation + +1. Run `npm install rn-apple-healthkit --save` +2. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]` +3. Go to `node_modules` ➜ `rn-apple-healthkit` and add `RCTAppleHealthkit.xcodeproj` +4. In XCode, in the project navigator, select your project. Add `libRCTAppleHealthkit.a` to your project's `Build Phases` ➜ `Link Binary With Libraries` +5. Click `RCTAppleHealthkit.xcodeproj` in the project navigator and go the `Build Settings` tab. Make sure 'All' is toggled on (instead of 'Basic'). In the `Search Paths` section, look for `Header Search Paths` and make sure it contains both `$(SRCROOT)/../../react-native/React` and `$(SRCROOT)/../../../React` - mark both as `recursive`. +6. Enable Healthkit in your application's `Capabilities` +![Alt text](/examples/images/Capabilities_Healthkit.png "Xcode Capabilities Section") +7. Compile and run + +### Usage + +Just `import` the `rn-apple-healthkit` module and you're ready to go! + +```javascript +import AppleHealthkit from 'rn-apple-healthkit'; + +let options = { + permissions: { + read: ["Height", "Weight", "StepCount", "DateOfBirth", "BodyMassIndex"], + write: ["Weight", "StepCount", "BodyMassIndex"] + } +}; +AppleHealthKit.isAvailable((err: Object, available: boolean) => { + AppleHealthkit.initHealthKit(options: Object, (err: Object, results: Object) => { + if (err) { + console.log("error initializing Healthkit: ", err); + return; + } + // Healthkit initialized... + }); +}); + +``` + +When the module has been successfully initialized you can read and write Healthkit data + +```javascript +import AppleHealthkit from 'rn-apple-healthkit'; + +AppleHealthkit.initHealthKit(null: Object, (err: string, results: Object) => { + + ... + + AppleHealthkit.getLatestWeight(null, (err: Object, weight: Object) => { + if(err){ + console.log("error getting current weight: ", err); + return; + } + // use weight.value + }); + + ... + + let options = { + value: 200 + }; + AppleHealthkit.saveWeight(options: Object, (err: Object, results: Object) => { + if (err) { + console.log("error saving weight to Healthkit: ", err); + return; + } + // weight successfully saved + }); + +} + + +``` + + +## Documentation + +### Permissions + +The available Healthkit permissions to use with `initHealthKit` + +| Permission | Healthkit Identifier Type | Read | Write | +|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|-------| +| ActiveEnergyBurned | [HKQuantityTypeIdentifierActiveEnergyBurned](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifieractiveenergyburned?language=objc) | ✓ | ✓ | +| AppleExerciseTime | [HKQuantityTypeIdentifierAppleExerciseTime](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierappleexercisetime?language=objc) | ✓ | | +| BasalEnergyBurned | [HKQuantityTypeIdentifierBasalEnergyBurned](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierbasalenergyburned?language=objc) | ✓ | ✓ | +| BiologicalSex | [HKCharacteristicTypeIdentifierBiologicalSex](https://developer.apple.com/reference/Healthkit/hkcharacteristictypeidentifierbiologicalsex?language=objc) | ✓ | | +| BloodGlucose | [HKQuantityTypeIdentifierBloodGlucose](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierbloodglucose?language=objc) | ✓ | | +| BodyMassIndex | [HKQuantityTypeIdentifierBodyMassIndex](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierbodymassindex?language=objc) | ✓ | ✓ | +| BodyTemperature | [HKQuantityTypeIdentifierBodyTemperature](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierbodytemperature?language=objc) | ✓ | | +| DateOfBirth | [HKCharacteristicTypeIdentifierDateOfBirth](https://developer.apple.com/reference/Healthkit/hkcharacteristictypeidentifierdateofbirth?language=objc) | ✓ | | +| DietaryEnergy | [HKQuantityTypeIdentifierDietaryEnergyConsumed](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierdietaryenergyconsumed?language=objc) | ✓ | ✓ | +| DistanceCycling | [HKQuantityTypeIdentifierDistanceCycling](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierdistancecycling?language=objc) | ✓ | ✓ | +| DistanceWalkingRunning | [HKQuantityTypeIdentifierDistanceWalkingRunning](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierdistancewalkingrunning?language=objc) | ✓ | ✓ | +| FlightsClimbed | [HKQuantityTypeIdentifierFlightsClimbed](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierflightsclimbed?language=objc) | ✓ | ✓ | +| HeartRate | [HKQuantityTypeIdentifierHeartRate](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierheartrate?language=objc) | ✓ | | +| Height | [HKQuantityTypeIdentifierHeight](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierheight?language=objc) | ✓ | ✓ | +| LeanBodyMass | [HKQuantityTypeIdentifierLeanBodyMass](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierleanbodymass?language=objc) | ✓ | ✓ | +| MindfulSession | [HKCategoryTypeIdentifierMindfulSession](https://developer.apple.com/reference/healthkit/hkcategorytypeidentifiermindfulsession?language=objc) | | ✓ | +| NikeFuel | [HKQuantityTypeIdentifierNikeFuel](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifiernikefuel?language=objc) | ✓ | | +| RespiratoryRate | [HKQuantityTypeIdentifierRespiratoryRate](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierrespiratoryrate?language=objc) | ✓ | | +| SleepAnalysis | [HKCategoryTypeIdentifierSleepAnalysis](https://developer.apple.com/reference/Healthkit/hkcategorytypeidentifiersleepanalysis?language=objc) | ✓ | | +| StepCount | [HKQuantityTypeIdentifierStepCount](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierstepcount?language=objc) | ✓ | ✓ | +| Steps | [HKQuantityTypeIdentifierSteps](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifiersteps?language=objc) | ✓ | ✓ | +| Weight | [HKQuantityTypeIdentifierBodyMass](https://developer.apple.com/reference/Healthkit/hkquantitytypeidentifierbodymass?language=objc) | ✓ | ✓ | +| BloodPressureDiastolic | [HKQuantityTypeIdentifierBloodPressureDiastolic](https://developer.apple.com/documentation/healthkit/hkquantitytypeidentifierbloodpressurediastolic?language=objc) | ✓ | ✓ | +| BloodPressureSystolic | [HKQuantityTypeIdentifierBloodPressureSystolic](https://developer.apple.com/documentation/healthkit/hkquantitytypeidentifierbloodpressuresystolic?language=objc) | ✓ | ✓ | + +These permissions are exported as constants of the `rn-apple-healthkit` module. + +```javascript +import AppleHealthKit from 'react-native-apple-healthkit'; + +... + +// get the available permissions from AppleHealthKit.Constants object +const PERMS = AppleHealthKit.Constants.Permissions; + +// setup healthkit read/write permissions using PERMS +const healthKitOptions = { + permissions: { + read: [ + PERMS.StepCount, + PERMS.Height, + ], + write: [ + PERMS.StepCount + ], + } +}; + +... +``` + + +Options +------- + +#### **`isAvailable`** +Check if Healthkit is available on the device. +```javascript +import AppleHealthkit from 'rn-apple-healthkit'; + +AppleHealthkit.isAvailable((err: Object, available: boolean) => { + if (available) { + // ... + } +}); +``` +___ + +#### **`initHealthKit`** +Initialize Healthkit. This will show the Healthkit permissions prompt for any read/write permissions set in the required `options` object. + +Due to Apple's privacy model if an app user has previously denied a specific permission then they can not be prompted again for that same permission. The app user would have to go into the Apple Health app and grant the permission to your react-native app under *sources* tab. + +For any data that is read from Healthkit the status/error is the same for both. This privacy restriction results in having no knowledge of whether the permission was denied (make sure it's added to the permissions options object), or the data for the specific request was nil (ex. no steps recorded today). + +For any data written to Healthkit an authorization error can be caught. If an authorization error occurs you can prompt the user to set the specific permission or add the permission to the options object if not present. + +If new read/write permissions are added to the options object then the app user will see the Healthkit permissions prompt with the new permissions to allow. + +`initHealthKit` requires an options object with Healthkit permission settings +```javascript +let options = { + permissions: { + read: ["Height", "Weight", "StepCount", "DateOfBirth", "BodyMassIndex"], + write: ["Weight", "StepCount", "BodyMassIndex"] + } +}; +``` + +```javascript +AppleHealthkit.initHealthKit(options: Object, (err: string, results: Object) => { + if (err) { + console.log("error initializing Healthkit: ", err); + return; + } + // Healthkit is initialized... + // now safe to read and write Healthkit data... +}); +``` + +___ + +#### **`getBiologicalSex`** +Get the biological sex (gender). If the `BiologicalSex` read permission is missing or the user has denied it then the value will be `unknown`. The possible values are: + +| Value | HKBiologicalSex | +|---------|-----------------------| +| unknown | HKBiologicalSexNotSet | +| male | HKBiologicalSexMale | +| female | HKBiologicalSexFemale | +| other | HKBiologicalSexOther | + +```javascript +AppleHealthkit.getBiologicalSex(null, (err: Object, results: Object) => { + if (this._handleHealthkitError(err, 'getBiologicalSex')) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 'female', +} +``` + +___ + +#### **`getDateOfBirth`** +Get the date of birth. + +On success, the callback function will be provided with a `res` object containing dob `value: string` (ISO timestamp), and `age: number` (age in years): +```javascript +AppleHealthkit.getDateOfBirth(null, (err: Object, results: Object) => { + if (this._handleHealthkitError(err, 'getDateOfBirth')) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: '1986-09-01T00:00:00.000-0400', + age: 29 +} +``` + +___ + +#### **`getStepCount`** +Get the aggregated total steps for a specific day (starting and ending at midnight). + +An optional options object may be provided containing `date` field representing the selected day. If `date` is not set or an options object is not provided then the current day will be used. +```javascript +let d = new Date(2016,1,1); +let options = { + date: d.toISOString() +}; +``` + +```javascript +AppleHealthkit.getStepCount(options: Object, (err: Object, results: Object) => { + if (this._handleHealthkitError(err, 'getStepCount')) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 213, +} +``` + +___ + +#### **`getDailyStepCountSamples`** +Get the total steps per day over a specified date range. + +`getDailyStepCountSamples` accepts an options object containing required *`startDate: ISO8601Timestamp`* and optional *`endDate: ISO8601Timestamp`*. If `endDate` is not provided it will default to the current time +```javascript +let options = { + startDate: (new Date(2016,1,1)).toISOString() // required + endDate: (new Date()).toISOString() // optional; default now +}; +``` + +```javascript + AppleHealthkit.getDailyStepCountSamples(options: Object, (err: Object, results: Array) => { + if (this._handleHealthkitError(err, 'getDailyStepCountSamples')) { + return; + } + console.log(results) +}); +``` + +The function will be called with an array of elements. Each element is an object containing `value`, `startDate`, and `endDate` fields: +```javascript +[ + { value: 8, startDate: '2016-07-09T00:00:00.000-0400', endDate: '2016-07-10T00:00:00.000-0400' }, + { value: 1923, startDate: '2016-07-08T00:00:00.000-0400', endDate: '2016-07-09T00:00:00.000-0400' }, + { value: 1802, startDate: '2016-07-07T00:00:00.000-0400', endDate: '2016-07-08T00:00:00.000-0400' }, +] +``` + +___ + +#### **`initStepCountObserver`** +Setup an HKObserverQuery for step count (HKQuantityTypeIdentifierStepCount) that will +trigger an event listenable on react-native `NativeAppEventEmitter` when the +Healthkit step count has changed. + +The `initStepCountObserver` method must be called before adding a listener to +NativeAppEventEmitter. After the step count observer has been initialized you can +listen to the NativeAppEventEmitter `change:steps` event and re-fetch relevent +step count data in the event handler. + +The `initStepCountObserver` method should be called after Healthkit has been +successfully initialized (AppleHealthkit.initHealthKit has been called without +error). + +```javascript +// import NativeAppEventEmitter from react-native +import { + Navigator, + View, + NativeAppEventEmitter, +} from 'react-native'; +``` + + +```javascript +AppleHealthkit.initHealthKit(HKOPTIONS, (err, res) => { + if (this._handleHKError(err, 'initHealthKit')) { + return; + } + + // initialize the step count observer + AppleHealthkit.initStepCountObserver({}, () => {}); + + // add event listener for 'change:steps' and handle the + // event in the event handler function. + // + // when adding a listener, a 'subscription' object is + // returned that must be used to remove the listener + // when the component unmounts. The subscription object + // must be accessible to any function/method/instance + // that will be unsubscribing from the event. + this.sub = NativeAppEventEmitter.addListener( + 'change:steps', + (evt) => { + // a 'change:steps' event has been received. step + // count data should be re-fetched from Healthkit. + this._fetchStepCountData(); + } + ); + + // other tasks to perform after Healthkit has been + // initialized (fetch relevant Healthkit data). + this._fetchStepCountData(); + this._fetchOtherRelevantHealthkitData(); + // ... +}); + +... + +// when the component where the listener was added unmounts +// (or whenever the listener should be removed), call the +// 'remove' method of the subscription object. +componentWillUnmount() { + this.sub.remove(); +} +``` + +___ + +#### **`saveSteps`** +Save a step count sample. + +A step count sample represents the number of steps during a specific period of time. A sample should be a precise as possible, with startDate and endDate representing the range of time the steps were taken in. + +`saveSteps` accepts an options object containing required *`value: number`*, *`startDate: ISO8601Timestamp`*, and *`endDate: ISO8601Timestamp`*. +```javascript +// startDate and endDate are 30 minutes apart. +// this means the step count value occurred within those 30 minutes. +let options = { + value: 100, + startDate: (new Date(2016,6,2,6,0,0)).toISOString(), + endDate: (new Date(2016,6,2,6,30,0)).toISOString() +}; +``` + +```javascript +AppleHealthkit.saveSteps(options, (err, res) => { + if (this._handleHKError(err, 'saveSteps')) { + return; + } + // step count sample successfully saved +}); +``` + +___ + +#### **`getDistanceWalkingRunning`** +Get the total distance walking/running on a specific day. + +`getDistanceWalkingRunning` accepts an options object containing optional *`date: ISO8601Timestamp`* and *`unit: string`*. If `date` is not provided it will default to the current time. `unit` defaults to `meter`. + +```javascript +let options = { + unit: 'mile', // optional; default 'meter' + date: (new Date(2016,5,1)).toISOString(), // optional; default now +}; +``` + +```javascript +AppleHealthkit.getDistanceWalkingRunning(options: Object, (err: Object, results: Object) => { + if (this._handleHKError(err, 'getDistanceWalkingRunning')) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 1.45, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getDistanceCycling`** +Get the total distance cycling on a specific day. + +`getDistanceCycling` accepts an options object containing optional *`date: ISO8601Timestamp`* and *`unit: string`*. If `date` is not provided it will default to the current time. `unit` defaults to `meter` +```javascript +let options = { + unit: 'mile', // optional; default 'meter' + date: (new Date(2016,5,1)).toISOString(), // optional; default now +}; +``` + +```javascript +AppleHealthkit.getDistanceCycling(options: Object, (err: Object, results: Object) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 11.45, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getFlightsClimbed`** +get the total flights climbed (1 flight is ~10ft of elevation) on a specific day. + +`getFlightsClimbed` accepts an options object containing optional *`date: ISO8601Timestamp`*. if `date` is not provided it will default to the current time. +```javascript +let options = { + date: (new Date(2016,5,1)).toISOString(), // optional; default now +}; +``` + +```javascript +AppleHealthkit.getFlightsClimbed(options: Object, (err: Object, results: Object) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 15, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getLatestWeight`** +Get the most recent weight sample. + +On success, the callback function will be provided with a `weight` object containing the weight `value`, and the `startDate` and `endDate` of the weight sample. *Note: startDate and endDate will be the same as weight samples are saved at a specific point in time.* + +```javascript +let options = { + unit: 'pound' +}; +``` + +```javascript +AppleHealthkit.getLatestWeight(options, (err: string, results: Object) => { + if (err) { + console.log("error getting latest weight: ", err); + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 200, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getWeightSamples`** +query for weight samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'pound', // optional; default 'pound' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` + +```javascript +AppleHealthkit.getWeightSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +[ + { value: 160, startDate: '2016-07-09T00:00:00.000-0400', endDate: '2016-07-10T00:00:00.000-0400' }, + { value: 161, startDate: '2016-07-08T00:00:00.000-0400', endDate: '2016-07-09T00:00:00.000-0400' }, + { value: 165, startDate: '2016-07-07T00:00:00.000-0400', endDate: '2016-07-08T00:00:00.000-0400' }, +] +``` + +___ + +#### **`saveWeight`** +save a numeric weight value to Healthkit + +`saveWeight` accepts an options object containing a numeric weight value: +```javascript +let options = { + value: 200 +} +``` + +```javascript +AppleHealthkit.saveWeight(options: Object, (err: Object, results: Object) => { + if (err) { + console.log("error saving weight to Healthkit: ", err); + return; + } + // Done +}); +``` + +___ + +#### **`getLatestHeight`** +Get the most recent height value. + +On success, the callback function will be provided with a `height` object containing the height `value`, and the `startDate` and `endDate` of the height sample. *Note: startDate and endDate will be the same as height samples are saved at a specific point in time.* + +```javascript +AppleHealthkit.getLatestHeight(null, (err: string, results: Object) => { + if (err) { + console.log("error getting latest height: ", err); + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 72, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getHeightSamples`** +query for height samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'inch', // optional; default 'inch' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` + +```javascript +AppleHealthkit.getHeightSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +The callback function will be called with a `samples` array containing objects with `value`, `startDate`, and `endDate` fields +```javascript +[ + { value: 74.02, startDate:'2016-06-29T17:55:00.000-0400', endDate:'2016-06-29T17:55:00.000-0400' }, + { value: 74, startDate:'2016-03-12T13:22:00.000-0400', endDate:'2016-03-12T13:22:00.000-0400' }, +] +``` + +___ + +#### **`saveHeight`** +save a numeric height value to Healthkit + +`saveHeight` accepts an options object containing a numeric height value: +```javascript +let options = { + value: 200 +} +``` + +```javascript +AppleHealthkit.saveHeight(options: Object, (err: Object, results: Object) => { + if (err) { + return; + } + // height successfully saved +}); +``` + +___ + +#### **`getLatestBmi`** +Get the most recent BMI sample. + +On success, the callback function will be provided with a `bmi` object containing the BMI `value`, and the `startDate` and `endDate` of the sample. *Note: startDate and endDate will be the same as bmi samples are saved at a specific point in time.* +```javascript +AppleHealthkit.getLatestBmi(null, (err: string, results: Object) => { + if (err) { + console.log("error getting latest bmi data: ", err); + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 27.2, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`saveBmi`** +save a numeric BMI value to Healthkit + +`saveBmi` accepts an options object containing a numeric BMI value: +```javascript +let options = { + value: 27.2 +} +``` +```javascript +AppleHealthkit.saveBmi(options: Object, (err: Object, results: Object) => { + if (err) { + return; + } + // BMI successfully saved +}); +``` + +___ + +#### **`getLatestBodyFatPercentage`** +Get the most recent body fat percentage. The percentage value is a number between 0 and 100. + +On success, the callback function will be provided with a `bodyFatPercentage` object containing the body fat percentage `value`, and the `startDate` and `endDate` of the sample. *Note: startDate and endDate will be the same as bodyFatPercentage samples are saved at a specific point in time.* + +```javascript +AppleHealthkit.getLatestBodyFatPercentage(null, (err: Object, results: Object) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 20, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getLatestLeanBodyMass`** +Get the most recent lean body mass. The value is a number representing the weight in pounds (lbs) + +On success, the callback function will be provided with a `leanBodyMass` object containing the leanBodyMass `value`, and the `startDate` and `endDate` of the sample. *Note: startDate and endDate will be the same as leanBodyMass samples are saved at a specific point in time.* + +```javascript + AppleHealthkit.getLatestLeanBodyMass(null, (err: Object, results: Object) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +{ + value: 176, + startDate: '2016-07-08T12:00:00.000-0400', + endDate: '2016-07-08T12:00:00.000-0400' +} +``` + +___ + +#### **`getHeartRateSamples`** +query for heart rate samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'bpm', // optional; default 'bpm' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` + +the callback function will be called with a `samples` array containing objects with *value*, *startDate*, and *endDate* fields +```javascript +AppleHealthkit.getHeartRateSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +[ + { value: 74.02, startDate:'2016-06-29T17:55:00.000-0400', endDate:'2016-06-29T17:55:00.000-0400' }, + { value: 74, startDate:'2016-03-12T13:22:00.000-0400', endDate:'2016-03-12T13:22:00.000-0400' }, +] +``` + +___ + +#### **`getBodyTemperatureSamples`** +query for body temperature samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'celsius', // optional; default 'celsius' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` +available units are: `'fahrenheit'`, `'celsius'`. + +the callback function will be called with a `samples` array containing objects with *value*, *startDate*, and *endDate* fields. + +```javascript +AppleHealthkit.getBodyTemperatureSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +[ + { value: 74.02, startDate:'2016-06-29T17:55:00.000-0400', endDate:'2016-06-29T17:55:00.000-0400' }, + { value: 74, startDate:'2016-03-12T13:22:00.000-0400', endDate:'2016-03-12T13:22:00.000-0400' }, +] +``` + +___ + +#### **`getBloodPressureSamples`** +query for blood pressure samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'mmhg', // optional; default 'mmhg' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` + +the callback function will be called with a `samples` array containing objects with *bloodPressureSystolicValue*, *bloodPressureDiastolicValue*, *startDate*, and *endDate* fields + +```javascript +AppleHealthkit.getBloodPressureSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +```javascript +[ + { bloodPressureSystolicValue: 120, bloodPressureDiastolicValue: 81, startDate:'2016-06-29T17:55:00.000-0400', endDate:'2016-06-29T17:55:00.000-0400' }, + { bloodPressureSystolicValue: 119, bloodPressureDiastolicValue: 77, startDate:'2016-03-12T13:22:00.000-0400', endDate:'2016-03-12T13:22:00.000-0400' }, +] +``` + + +___ + +#### **`getRespiratoryRateSamples`** +query for respiratory rate samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'bpm', // optional; default 'bpm' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` + +the callback function will be called with a `samples` array containing objects with *value*, *startDate*, and *endDate* fields + +```javascript +AppleHealthkit.getRespiratoryRateSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +___ + +#### **`getBloodGlucoseSamples`** +query for blood glucose samples. the options object is used to setup a query to retrieve relevant samples. +```javascript +let options = { + unit: 'mmolPerL', // optional; default 'mmolPerL' + startDate: (new Date(2016,4,27)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + ascending: false, // optional; default false + limit:10, // optional; default no limit +}; +``` +available units are: `'mmolPerL'`, `'mgPerdL'`. + +the callback function will be called with a `samples` array containing objects with *value*, *startDate*, and *endDate* fields + +```javascript +AppleHealthkit.getBloodGlucoseSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results) +}); +``` + +___ + +#### **`getSleepSamples`** +query for sleep samples. + +each sleep sample represents a period of time with a startDate and an endDate. +the sample's value will be either `INBED` or `ASLEEP`. these values should overlap, +meaning that two (or more) samples represent a single nights sleep activity. see +[Healthkit SleepAnalysis] reference documentation + +the options object is used to setup a query to retrieve relevant samples. +the options must contain `startDate` and may also optionally include `endDate` +and `limit` options +```javascript +let options = { + startDate: (new Date(2016,10,1)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now + limit:10, // optional; default no limit +}; +``` + +The callback function will be called with a `samples` array containing objects +with *value*, *startDate*, and *endDate* fields + +```javascript +AppleHealthkit.getSleepSamples(options, (err: Object, results: Array) => { + if (err) { + return; + } + console.log(results). +}); +``` + +#### **`saveMindfulSession`** + +each mindfulness sample represents a period of time with a startDate and an endDate. +the options must contain `startDate` and `endDate` + +```javascript +let options = { + startDate: (new Date(2016,10,1)).toISOString(), // required + endDate: (new Date()).toISOString(), // optional; default now +}; + +``` + +``` +AppleHealthKit.saveMindfulSession(options, (err, res) => { + if (err) return { + return + } + console.log('Mindful session saved') +}); +``` + +> *This package is fork from [react-native-apple-Healthkit](https://github.com/GregWilson/react-native-apple-Healthkit)* diff --git a/constants.js b/constants.js index 34427d01440163742b4b910b5c8bfc8edc26523c..16912c55a3559c94d54e44cba681e275c5f068d7 100644 --- a/constants.js +++ b/constants.js @@ -1,5 +1,9 @@ 'use strict' +/** + * Apple Health Permissions + * @type {Object} + */ const PERMISSIONS = { DateOfBirth: 'DateOfBirth', BiologicalSex: 'BiologicalSex', @@ -26,9 +30,12 @@ const PERMISSIONS = { RespiratoryRate: 'RespiratoryRate', BloodGlucose: 'BloodGlucose', SleepAnalysis: 'SleepAnalysis', + MindfulSession: 'MindfulSession', }; - +/** + * Unit Request Types + */ const UNITS = { gram: 'gram', pound: 'pound', @@ -52,8 +59,6 @@ const UNITS = { mgPerdL: 'mgPerdL', }; - - const CONSTANTS = { Permissions: PERMISSIONS, Units: UNITS, diff --git a/examples/BodyMeasurements/.buckconfig b/examples/BodyMeasurements/.buckconfig deleted file mode 100644 index 934256cb29d4a3616c740861c6af35ff6a165917..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/examples/BodyMeasurements/.flowconfig b/examples/BodyMeasurements/.flowconfig deleted file mode 100644 index 466bb117d90833062b718469907c061ea7989313..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/.flowconfig +++ /dev/null @@ -1,99 +0,0 @@ -[ignore] - -# We fork some components by platform. -.*/*.web.js -.*/*.android.js - -# Some modules have their own node_modules with overlap -.*/node_modules/node-haste/.* - -# Ugh -.*/node_modules/babel.* -.*/node_modules/babylon.* -.*/node_modules/invariant.* - -# Ignore react and fbjs where there are overlaps, but don't ignore -# anything that react-native relies on -.*/node_modules/fbjs/lib/Map.js -.*/node_modules/fbjs/lib/ErrorUtils.js - -# Flow has a built-in definition for the 'react' module which we prefer to use -# over the currently-untyped source -.*/node_modules/react/react.js -.*/node_modules/react/lib/React.js -.*/node_modules/react/lib/ReactDOM.js - -.*/__mocks__/.* -.*/__tests__/.* - -.*/commoner/test/source/widget/share.js - -# Ignore commoner tests -.*/node_modules/commoner/test/.* - -# See https://github.com/facebook/flow/issues/442 -.*/react-tools/node_modules/commoner/lib/reader.js - -# Ignore jest -.*/node_modules/jest-cli/.* - -# Ignore Website -.*/website/.* - -# Ignore generators -.*/local-cli/generator.* - -# Ignore BUCK generated folders -.*\.buckd/ - -# Ignore RNPM -.*/local-cli/rnpm/.* - -.*/node_modules/is-my-json-valid/test/.*\.json -.*/node_modules/iconv-lite/encodings/tables/.*\.json -.*/node_modules/y18n/test/.*\.json -.*/node_modules/spdx-license-ids/spdx-license-ids.json -.*/node_modules/spdx-exceptions/index.json -.*/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json -.*/node_modules/resolve/lib/core.json -.*/node_modules/jsonparse/samplejson/.*\.json -.*/node_modules/json5/test/.*\.json -.*/node_modules/ua-parser-js/test/.*\.json -.*/node_modules/builtin-modules/builtin-modules.json -.*/node_modules/binary-extensions/binary-extensions.json -.*/node_modules/url-regex/tlds.json -.*/node_modules/joi/.*\.json -.*/node_modules/isemail/.*\.json -.*/node_modules/tr46/.*\.json - - -[include] - -[libs] -node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow -flow/ - -[options] -module.system=haste - -esproposal.class_static_fields=enable -esproposal.class_instance_fields=enable - -experimental.strict_type_args=true - -munge_underscores=true - -module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FixMe - -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-6]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-6]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy - -[version] -^0.26.0 diff --git a/examples/BodyMeasurements/.gitignore b/examples/BodyMeasurements/.gitignore deleted file mode 100644 index eb1535e41e3df728de37aa551c2c387f8bbc31e0..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# OSX -# -.DS_Store - -# Xcode -# -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -project.xcworkspace - -# Android/IJ -# -*.iml -.idea -.gradle -local.properties - -# node.js -# -node_modules/ -npm-debug.log - -# BUCK -buck-out/ -\.buckd/ -android/app/libs -android/keystores/debug.keystore diff --git a/examples/BodyMeasurements/.watchmanconfig b/examples/BodyMeasurements/.watchmanconfig deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/examples/BodyMeasurements/README.md b/examples/BodyMeasurements/README.md deleted file mode 100644 index 00fffc79855909a645e59389d3fc4f093e5ff4ed..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Body Measurements Demo - -![alt text](https://raw.githubusercontent.com/GregWilson/react-native-apple-healthkit/master/examples/images/body_measurements_demo_screen.png "Body Measurements Demo App Screenshot") - diff --git a/examples/BodyMeasurements/app/actions/actions.js b/examples/BodyMeasurements/app/actions/actions.js deleted file mode 100644 index 26d65a13cf0ae855da5c371191825a2bc319dfac..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/actions/actions.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Created by greg on 2016-06-28. - */ - -var airflux = require('airflux'); - -let actions = { - saveWeight: new airflux.Action().asFunction, - saveHeight: new airflux.Action().asFunction, -}; - -module.exports = actions; -export default actions; diff --git a/examples/BodyMeasurements/app/app.js b/examples/BodyMeasurements/app/app.js deleted file mode 100644 index 7fde17cc7460f81ce5b2b74bb3ee7b57b0b177e6..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/app.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Navigator, - Text, - View -} from 'react-native'; - - -let Dashboard = require('./components/dashboard/dashboard'); -let Weight = require('./components/weight/weight'); -let Height = require('./components/height/height'); -let BodyMassIndex = require('./components/bodyMassIndex/bodyMassIndex'); -let BodyFatPercentage = require('./components/bodyFatPercentage/bodyFatPercentage'); -let LeanBodyMass = require('./components/leanBodyMass/leanBodyMass'); - - -class BodyMeasurementsApp extends Component { - render() { - return ( - - ); - } - - renderScene(route, navigator) { - if(route.name == 'Dashboard') { - return - } - if(route.name == 'Weight') { - return - } - if(route.name == 'Height') { - return - } - if(route.name == 'BodyMassIndex') { - return - } - if(route.name == 'BodyFatPercentage') { - return - } - if(route.name == 'LeanBodyMass') { - return - } - } -} - -module.exports = BodyMeasurementsApp; -export default BodyMeasurementsApp; diff --git a/examples/BodyMeasurements/app/assets/images/arrow-right.png b/examples/BodyMeasurements/app/assets/images/arrow-right.png deleted file mode 100755 index 3d3b577f21fbd604d49b166d41395979b05cac9d..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/arrow-right.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/bmi.png b/examples/BodyMeasurements/app/assets/images/bmi.png deleted file mode 100644 index 562966ac36733b57013950dd01367954a338e91d..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/bmi.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/bodyfat.png b/examples/BodyMeasurements/app/assets/images/bodyfat.png deleted file mode 100644 index d1b2a37eb3f8df8b9c08a414b112bc19e706b941..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/bodyfat.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/dumbbell.png b/examples/BodyMeasurements/app/assets/images/dumbbell.png deleted file mode 100644 index f4660f46943b93ab23cd432582d983fb520fec07..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/dumbbell.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/heartbeat.png b/examples/BodyMeasurements/app/assets/images/heartbeat.png deleted file mode 100755 index b724ae73c69d98c595751a4c76ec37bd3031a735..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/heartbeat.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/measuring-tape.png b/examples/BodyMeasurements/app/assets/images/measuring-tape.png deleted file mode 100644 index 9151edd8b84e983f23e312e5d8301aa7adcf3768..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/measuring-tape.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/muscle-mass.png b/examples/BodyMeasurements/app/assets/images/muscle-mass.png deleted file mode 100644 index fe14c4b2a8034a96f475dc1a428c649fa859ef0b..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/muscle-mass.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/ruler.png b/examples/BodyMeasurements/app/assets/images/ruler.png deleted file mode 100644 index 9239c29d0ced5e00e502bea68e74ad072e9d3606..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/ruler.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/scale.png b/examples/BodyMeasurements/app/assets/images/scale.png deleted file mode 100755 index 37f5710ac52f39f948d198c8bc417e40b2f829c8..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/scale.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/scale_purple.png b/examples/BodyMeasurements/app/assets/images/scale_purple.png deleted file mode 100755 index e78ac21bb2ed0f1b4b30fb82d32cbcdedd7ac5a1..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/scale_purple.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/steps.png b/examples/BodyMeasurements/app/assets/images/steps.png deleted file mode 100755 index a32c9940fe139b7d11f60be169ea8614e8139731..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/steps.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/assets/images/strength.png b/examples/BodyMeasurements/app/assets/images/strength.png deleted file mode 100644 index 84f24856180a3fa4216520d8c700210e44098d38..0000000000000000000000000000000000000000 Binary files a/examples/BodyMeasurements/app/assets/images/strength.png and /dev/null differ diff --git a/examples/BodyMeasurements/app/components/bodyFatPercentage/bodyFatPercentage.js b/examples/BodyMeasurements/app/components/bodyFatPercentage/bodyFatPercentage.js deleted file mode 100644 index 68c7c0accb5720297fee0c9123ca8252ccc8ca7c..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/bodyFatPercentage/bodyFatPercentage.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - Text, - View -} from 'react-native'; - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; - - -class BodyFatPercentage extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - bodyFatFormatted: BodyStore.GetBodyFatPercentageFormatted(), - }; - } - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - {this.state.bodyFatFormatted} - - - - - - - - ); - } -} - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Body Fat Percentage - - - ); - } -}; - - -module.exports = BodyFatPercentage; -export default BodyFatPercentage; diff --git a/examples/BodyMeasurements/app/components/bodyMassIndex/bodyMassIndex.js b/examples/BodyMeasurements/app/components/bodyMassIndex/bodyMassIndex.js deleted file mode 100644 index 0c862f9af6a4ed19634f0f68779818743e2c9f8c..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/bodyMassIndex/bodyMassIndex.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - Text, - View -} from 'react-native'; - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; - - -class BodyMassIndex extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - bmiFormatted: BodyStore.GetBMIFormatted(), - }; - } - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - {this.state.bmiFormatted} - - - - - - - - ); - } -} - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Body Mass Index - - - ); - } -}; - - -module.exports = BodyMassIndex; -export default BodyMassIndex; diff --git a/examples/BodyMeasurements/app/components/dashboard/dashboard.js b/examples/BodyMeasurements/app/components/dashboard/dashboard.js deleted file mode 100644 index 6065754acc5110800824f430c79e86e6aae75bd7..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/dashboard/dashboard.js +++ /dev/null @@ -1,127 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - ScrollView, - Text, - View -} from 'react-native'; -import TimerMixin from 'react-timer-mixin'; -var reactMixin = require('react-mixin'); - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; -import DashboardItem from './item'; - - -class Dashboard extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - weightFormatted: BodyStore.GetWeightFormatted(), - heightFormatted: BodyStore.GetHeightFormatted(), - bmiFormatted: BodyStore.GetBMIFormatted(), - bodyFatFormatted: BodyStore.GetBodyFatPercentageFormatted(), - leanBodyMassFormatted: BodyStore.GetLeanBodyMassFormatted(), - }; - } - - _onPressItem(key) { - console.log('_onPressItem() ==> ', key); - let self = this; - this.requestAnimationFrame(() => { - this.props.navigator.push({ - name: key - }); - }) - } - - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - - - - - - - - - ); - } -} - -reactMixin(Dashboard.prototype, TimerMixin); - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return null; - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - HealthKit Body Measurements - - - ); - } -}; - - -module.exports = Dashboard; -export default Dashboard; diff --git a/examples/BodyMeasurements/app/components/dashboard/item.js b/examples/BodyMeasurements/app/components/dashboard/item.js deleted file mode 100644 index 694d838d584e225c063aa0e0fa222f88eafd5753..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/dashboard/item.js +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Navigator, - TouchableOpacity, - TouchableHighlight, - ScrollView, - Image, - Text, - View -} from 'react-native'; -import styles from '../../styles/styles'; - -const ICONS = { - "scale": require("../../assets/images/scale.png"), - "ruler": require("../../assets/images/ruler.png"), - "bmi": require("../../assets/images/bmi.png"), - "bodyfat": require("../../assets/images/bodyfat.png"), - "musclemass": require("../../assets/images/muscle-mass.png"), - "arrowright": require('../../assets/images/arrow-right.png'), - "heartbeat": require('../../assets/images/heartbeat.png') -}; - - -class DashboardItem extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(this.props); - } - - componentWillReceiveProps(newProps) { - this.setState(this._getStateObject(newProps)); - } - - _getStateObject(props) { - let label = props.label ? props.label : 'Label'; - let value = props.value ? props.value : 'Value'; - let iconSource = (props.icon && ICONS.hasOwnProperty(props.icon)) ? ICONS[props.icon] : ICONS.heartbeat; - return {label,value,iconSource}; - } - - render() { - return ( - - - - - - - {this.state.label} - - - - {this.state.value} - - - - - - - ) - } -} - -DashboardItem.propTypes = { - icon: React.PropTypes.string, - label: React.PropTypes.string, - value: React.PropTypes.string, - onPress: React.PropTypes.func -}; - -DashboardItem.defaultProps = { - onPress: function(){ - console.log('default onPress()'); - } -}; - -module.exports = DashboardItem; -export default DashboardItem; diff --git a/examples/BodyMeasurements/app/components/height/height.js b/examples/BodyMeasurements/app/components/height/height.js deleted file mode 100644 index 1d416fec6479a16ea9266acf722ed55fb97a4677..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/height/height.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - Text, - View -} from 'react-native'; - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; - - -class Height extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - heightFormatted: BodyStore.GetHeightFormatted(), - }; - } - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - {this.state.heightFormatted} - - - - - - - - ); - } -} - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Height - - - ); - } -}; - - -module.exports = Height; -export default Height; diff --git a/examples/BodyMeasurements/app/components/leanBodyMass/leanBodyMass.js b/examples/BodyMeasurements/app/components/leanBodyMass/leanBodyMass.js deleted file mode 100644 index f1a7ff1e57e79297e8d3e819de7a275791573f79..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/leanBodyMass/leanBodyMass.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - Text, - View -} from 'react-native'; - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; - - -class LeanBodyMass extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - leanBodyMassFormatted: BodyStore.GetLeanBodyMassFormatted(), - }; - } - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - {this.state.leanBodyMassFormatted} - - - - - - - - ); - } -} - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Lean Body Mass - - - ); - } -}; - - -module.exports = LeanBodyMass; -export default LeanBodyMass; diff --git a/examples/BodyMeasurements/app/components/weight/weight.js b/examples/BodyMeasurements/app/components/weight/weight.js deleted file mode 100644 index b5b6eb8840afea8b14b69b3628d7657cf07e658e..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/components/weight/weight.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - Text, - View -} from 'react-native'; - -import styles from '../../styles/styles'; -import BodyStore from '../../stores/body'; - - -class Weight extends Component { - - constructor(props) { - super(props); - this.state = this._getStateObject(); - } - - componentDidMount() { - this.unsub = BodyStore.listen(this._onBodyStoreEvent.bind(this)); - } - - componentWillUnmount() { - this.unsub(); - } - - _onBodyStoreEvent(evt) { - this.setState(this._getStateObject()) - } - - _getStateObject() { - return { - weightFormatted: BodyStore.GetWeightFormatted(), - }; - } - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - - - {this.state.weightFormatted} - - - - - - - - ); - } -} - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Weight - - - ); - } -}; - - -module.exports = Weight; -export default Weight; diff --git a/examples/BodyMeasurements/app/stores/body.js b/examples/BodyMeasurements/app/stores/body.js deleted file mode 100644 index 4e8f08a4087d52c6cef2aa532948408eb372f929..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/stores/body.js +++ /dev/null @@ -1,484 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - - -var airflux = require( 'airflux' ); -var _ = require('lodash'); -var moment = require('moment'); -var Immutable = require('immutable'); -//var actions = require('../actions/actions'); - -var AppleHealthKit = require('react-native-apple-healthkit'); - -var DATA = { - weight: 0, - height: 0, - bmi: 0, - bodyFatPercentage: 0, - leanBodyMass: 0, - steps: 0, -}; - -/** - * @namespace Stores - */ - -/** - * @class WeightStore - * @classdesc Airflux store to handle data, actions, and events relating to the WeightStore - * @memberof Stores - */ -class BodyStore extends airflux.Store { - - /** - * Initialize the WeightStore, optionally with 'props' object - * @constructs Stores.TestingEventService - * @param {object} props - an optional properties object to initialize the store with - * - */ - constructor(props) { - //console.log("WeightStore props --> ", props); - super(props); - let self = this; - - //this.listenTo(actions.addWeight, this._onactn_addWeight) - - this._initHealthKit = this._initHealthKit.bind(this); - this._fetchHealthKitUserBiologicalSex = this._fetchHealthKitUserBiologicalSex.bind(this); - this._fetchHealthKitUserDateOfBirth = this._fetchHealthKitUserDateOfBirth.bind(this); - this._fetchHealthKitUserWeight = this._fetchHealthKitUserWeight.bind(this); - this._fetchHealthKitUserWeightSamples = this._fetchHealthKitUserWeightSamples.bind(this); - this._fetchHealthKitUserHeight = this._fetchHealthKitUserHeight.bind(this); - this._fetchHealthKitUserHeightSamples = this._fetchHealthKitUserHeightSamples.bind(this); - this._fetchHealthKitUserBmi = this._fetchHealthKitUserBmi.bind(this); - this._fetchHealthKitStepCountToday = this._fetchHealthKitStepCountToday.bind(this); - this._fetchHealthKitStepCountForDay = this._fetchHealthKitStepCountForDay.bind(this); - this._fetchDailyStepCounts = this._fetchDailyStepCounts.bind(this); - this._fetchHealthKitBodyFatPercentage = this._fetchHealthKitBodyFatPercentage.bind(this); - this._fetchHealthKitLeanBodyMass = this._fetchHealthKitLeanBodyMass.bind(this); - this._saveHeight = this._saveHeight.bind(this); - this._saveBmi = this._saveBmi.bind(this); - - this.GetWeightValue = this.GetWeightValue.bind(this); - this.GetWeightFormatted = this.GetWeightFormatted.bind(this); - this.GetSteps = this.GetSteps.bind(this); - this.GetHeightFormatted = this.GetHeightFormatted.bind(this); - this.GetHeightValue = this.GetHeightValue.bind(this); - this.GetBMIValue = this.GetBMIValue.bind(this); - this.GetBMIFormatted = this.GetBMIFormatted.bind(this); - this.GetBodyFatPercentageValue = this.GetBodyFatPercentageValue.bind(this); - this.GetBodyFatPercentageFormatted = this.GetBodyFatPercentageFormatted.bind(this); - this.GetLeanBodyMassValue = this.GetLeanBodyMassValue.bind(this); - this.GetLeanBodyMassFormatted = this.GetLeanBodyMassFormatted.bind(this); - - AppleHealthKit.isAvailable((err,available) => { - console.log('AppleHealthKit.isAvailable(): ', available); - if(available){ - self._initHealthKit(); - } - }); - - //AppleHealthKit.getInfo({init:"true"}, (err,res) => { - // if(err) { - // console.log("ERROR GETTING HEALTHKIT MODULE INFO"); - // console.log(err); - // return; - // } - // console.log("HEALTHKIT MODULE INFO: ", res); - //}); - } - - - _initHealthKit() { - let self = this; - - let healthKitOptions = { - permissions: { - read: ["Height", "Weight", "Steps", "DateOfBirth", "BodyMassIndex", "LeanBodyMass", "BodyFatPercentage", "BiologicalSex"], - write: ["Weight", "Height", "BodyMassIndex"] - } - }; - - AppleHealthKit.initHealthKit(healthKitOptions, (err, res) => { - if(this._handleHealthKitError(err, 'initHealthKit')){ - return; - } - console.log("HEALTHKIT INITIALIZED!! ", res); - - self._fetchHealthKitUserWeight(); - self._fetchHealthKitUserBmi(); - self._fetchHealthKitStepCountToday(); - self._fetchHealthKitUserHeight(); - self._fetchHealthKitBodyFatPercentage(); - self._fetchHealthKitLeanBodyMass(); - - self._fetchHealthKitStepCountForDay(); - self._fetchDailyStepCounts(); - - self._fetchHealthKitUserWeightSamples(); - self._fetchHealthKitUserHeightSamples(); - - self._fetchHealthKitUserBiologicalSex(); - self._fetchHealthKitUserDateOfBirth(); - - //setTimeout(() => {self._saveBmi(27)}, 1000); - //setTimeout(() => {self._onactn_addWeight({ - // weight: 215, - //})}, 1000); - - }); - } - - - _handleHealthKitError(err, method) : boolean { - if(err){ - let errStr = 'HealthKit_ERROR['+method+'] : '; - if(typeof err === 'string'){ - errStr += err; - } else if (typeof err === 'object' && err.message){ - errStr += err.message; - } - console.log(errStr); - return true; - } - return false; - } - - _onactn_addWeight(options) { - console.log('_onactn_addWeight() --> ', options); - if(options && options.weight){ - let weightVal = parseFloat(options.weight); - let self = this; - AppleHealthKit.saveWeight({value:weightVal}, (err, res) => { - if(this._handleHealthKitError(err, 'saveWeight')){ - return; - } - DATA.weight = weightVal; - self.trigger({ - name: 'change:weight', - target: null, - data: DATA.weight - }); - }); - } - } - - - _fetchHealthKitUserBiologicalSex() { - let self = this; - AppleHealthKit.getBiologicalSex(null, (err, sex) => { - if(this._handleHealthKitError(err, 'getBiologicalSex')){ - return; - } - console.log('BiologicalSex: ', sex); - }); - } - - _fetchHealthKitUserDateOfBirth() { - let self = this; - AppleHealthKit.getDateOfBirth(null, (err, dob) => { - if(this._handleHealthKitError(err, 'getDateOfBirth')){ - return; - } - console.log('DateOfBirth: ', dob); - }); - } - - - - _saveHeight(height_inches) { - let self = this; - let options = { - value: height_inches - }; - - AppleHealthKit.saveHeight(options, (err, res) => { - if(this._handleHealthKitError(err, 'saveHeight')){ - return; - } - console.log('Height Saved Successfully...'); - DATA.height = height_inches; - self.trigger({ - name: 'change:height', - target: null, - data: DATA.height - }); - }); - } - - - _fetchHealthKitUserWeight() { - let self = this; - let options = { - unit: "pound" - }; - AppleHealthKit.getLatestWeight(options, (err, res) => { - if(this._handleHealthKitError(err, 'getLatestWeight')){ - return; - } - let weight = res.value; - weight = _.round(weight,1); - - DATA.weight = weight; - self.trigger({ - name: 'change:weight', - target: null, - data: weight - }); - }); - } - - - - _fetchHealthKitUserWeightSamples() { - let self = this; - let d = new Date(2016,4,27); - let options = { - unit: "gram", - startDate: d.toISOString(), - ascending: false, - limit:3, - }; - AppleHealthKit.getWeightSamples(options, (err, samples) => { - if(this._handleHealthKitError(err, 'getWeightSamples')){ - return; - } - console.log('weight samples: ', samples); - }); - } - - - _fetchHealthKitUserHeight() { - let self = this; - let options = { - unit: "inch" - }; - AppleHealthKit.getLatestHeight(options, (err, res) => { - if(this._handleHealthKitError(err, 'getLatestHeight')){ - return; - } - let height = res.value; - console.log("HEIGHT: ", height); - - if(typeof height === "number" && height > 0){ - DATA.height = height; - self.trigger({ - name: 'change:height', - target: null, - data: height - }); - } - }); - } - - - _fetchHealthKitUserHeightSamples() { - let self = this; - let d = new Date(2016,1,1); - let options = { - unit: "inch", - startDate: d.toISOString(), - //ascending: false, - //limit:2, - }; - AppleHealthKit.getHeightSamples(options, (err, samples) => { - if(this._handleHealthKitError(err, 'getHeightSamples')){ - return; - } - console.log('height samples: ', samples); - }); - } - - - - _fetchHealthKitUserBmi() { - let self = this; - AppleHealthKit.getLatestBmi({blah:true}, (err, bmi) => { - if(this._handleHealthKitError(err, 'getLatestBmi')){ - return; - } - console.log("LATEST BMI: ", bmi); - if(bmi && bmi.value){ - DATA.bmi = _.round(bmi.value,1); - self.trigger({ - name: 'change:bmi', - target: null, - data: DATA.bmi - }); - } - }); - } - - _saveBmi(bmi_value) { - let self = this; - let options = { - value: bmi_value - }; - - AppleHealthKit.saveBmi(options, (err, res) => { - if(this._handleHealthKitError(err, 'saveBmi')){ - return; - } - console.log('BMI Saved Successfully...'); - DATA.bmi = bmi_value; - self.trigger({ - name: 'change:bmi', - target: null, - data: DATA.bmi - }); - }); - } - - - _fetchHealthKitBodyFatPercentage() { - let self = this; - AppleHealthKit.getLatestBodyFatPercentage({blah:true}, (err, res) => { - if(this._handleHealthKitError(err, 'getLatestBodyFatPercentage')){ - return; - } - let fatPercentage = res.value; - - console.log("BODY FAT PERCENTAGE: ", fatPercentage); - DATA.bodyFatPercentage = fatPercentage; - self.trigger({ - name: 'change:body_fat_percentage', - target: null, - data: DATA.bodyFatPercentage - }); - }); - } - - - _fetchHealthKitLeanBodyMass() { - let self = this; - AppleHealthKit.getLatestLeanBodyMass({blah:true}, (err, res) => { - if(this._handleHealthKitError(err, 'getLatestLeanBodyMass')){ - return; - } - let leanMass = res.value; - console.log("LEAN BODY MASS: ", leanMass); - DATA.leanBodyMass = _.round(leanMass,0); - self.trigger({ - name: 'change:lean_body_mass', - target: null, - data: DATA.leanBodyMass - }); - }); - } - - - - _fetchHealthKitStepCountToday() { - let self = this; - AppleHealthKit.getStepCount({options:"true"}, (err, steps) => { - if(this._handleHealthKitError(err, 'getStepCountForToday')){ - return; - } - console.log("STEPS : ", steps); - steps = _.round(steps,0); - - DATA.steps = steps; - self.trigger({ - name: 'change:steps', - target: null, - data: steps - }); - }); - } - - - _fetchHealthKitStepCountForDay() { - let self = this; - let d = new Date(2016,5,27); - let options = { - date: d.toISOString() - }; - AppleHealthKit.getStepCount(options, (err, steps) => { - if(this._handleHealthKitError(err, 'getStepCountForDay')){ - return; - } - console.log("STEPS FOR DAY : ", steps); - //steps = _.round(steps,0); - // - //DATA.steps = steps; - //self.trigger({ - // name: 'change:steps', - // target: null, - // data: steps - //}); - }); - } - - - _fetchDailyStepCounts() { - let self = this; - let d = new Date(2016,4,1); - let options = { - startDate: d.toISOString() - }; - AppleHealthKit.getDailyStepCountSamples(options, (err, res) => { - if(this._handleHealthKitError(err, 'getMultiDayStepCounts')){ - return; - } - console.log("DAILY STEP COUNTS: ", res); - }); - } - - - - - GetHeightValue() { - return DATA.height; - } - - GetHeightFormatted() { - let feet = _.floor((DATA.height / 12)); - let inches = _.floor((DATA.height % 12)); - let formatted = '' + feet + '\'' + inches + '"'; - return formatted; - } - - GetWeightValue() { - return DATA.weight; - } - - GetWeightFormatted() { - return DATA.weight + ' lbs'; - } - - GetBMIValue() { - return DATA.bmi; - } - - GetBMIFormatted() { - return '' + DATA.bmi; - } - - GetBodyFatPercentageValue() { - return DATA.bodyFatPercentage; - } - - GetBodyFatPercentageFormatted() { - return '' + DATA.bodyFatPercentage + '%'; - } - - GetLeanBodyMassValue() { - return DATA.leanBodyMass; - } - - GetLeanBodyMassFormatted() { - return '' + DATA.leanBodyMass + ' lbs'; - } - - - GetSteps() { - return DATA.steps; - } - -} - - -let storeInstance = new BodyStore(); -export default storeInstance; -module.exports = storeInstance; \ No newline at end of file diff --git a/examples/BodyMeasurements/app/styles/styles.js b/examples/BodyMeasurements/app/styles/styles.js deleted file mode 100644 index d96fb7f9952638914e85ecfd4035176639121fd6..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/app/styles/styles.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - -import { - Platform, - StyleSheet -} from 'react-native'; - - - -const styles = StyleSheet.create({ - - sceneContainerNavbar: { - flex: 1, - flexDirection: 'column', - //justifyContent: 'flex-start', - //alignItems: 'flex-start', - marginTop: (Platform.OS === 'ios') ? 64 : 54, - backgroundColor: '#FFFFFF' - }, - - navigationBar: { - borderBottomWidth: 1, - borderBottomColor: '#cccccc', - backgroundColor: '#f5f5f5' - }, - - navbarTitleTouchable: { - flex: 1, - justifyContent: 'center' - }, - navbarTitle: { - color: '#FD2D55', - margin: 10, - fontSize: 18 - }, - - - row_1_3: { - flex: 0.33, - flexDirection:'column', - padding:10, - //backgroundColor: '#FF8000' - }, - - row_2_3: { - flex: 0.66, - flexDirection:'column', - padding:10, - //backgroundColor: '#0088cc' - }, - - borderTopLightGrey: { - borderTopColor: '#CCCCCC', - borderTopWidth: 1, - }, - - largeCenteredText: { - textAlign: 'center', - flexDirection:'row', - fontSize:34, - marginTop:60, - }, - - dashboardListItemLabel: { - fontSize:12, - color: '#FD2D55', - position:'absolute', - left: 70, - top:0, - }, - - dashboardListItemValue: { - fontSize:22, - color: '#47a292', - position:'absolute', - left: 70, - top:15, - }, - - sceneContainerFull: { - flex: 1, - flexDirection: 'column', - //justifyContent: 'flex-start', - //alignItems: 'flex-start', - marginTop: 0, - backgroundColor: '#FFFFFF' - }, - - - dashboardToday: { - height: 30, - alignItems: 'stretch', - justifyContent: 'center', - alignItems: 'center', - backgroundColor: 'rgba(162, 162, 162, 0.2)', - }, - dashboardTodayText: { - - color: '#a2a2a2', - }, - - dashboardListItemHighlight: { - flexDirection: 'row', - alignSelf: 'stretch', - justifyContent: 'center', - //flex:1, - //alignSelf: 'stretch', - //overflow: 'hidden', - }, - - dashboardListItemView: { - flex: 1, - //backgroundColor: '#FDFDFD', - backgroundColor: '#FDFDFD', - //paddingTop:74, - //flexDirection: 'row', - flexDirection: 'column', - alignSelf: 'stretch', - justifyContent: 'flex-start', - alignItems: 'flex-start', - paddingTop:15, - paddingBottom: 15, - - //flexWrap: 'wrap', - - borderBottomColor: '#AAAAAA', - borderBottomWidth: 1, - }, - - dashboardListItemViewTransparent: { - flex: 1, - //backgroundColor: '#FDFDFD', - backgroundColor: 'transparent', - //paddingTop:74, - //flexDirection: 'row', - flexDirection: 'column', - alignSelf: 'stretch', - justifyContent: 'flex-start', - alignItems: 'flex-start', - paddingTop:15, - paddingBottom: 15, - - //flexWrap: 'wrap', - - borderBottomColor: '#AAAAAA', - borderBottomWidth: 1, - }, - - dashboardListItem: { - flexDirection: 'row', - alignSelf: 'stretch', - justifyContent: 'space-between', - flex:1, - backgroundColor: 'transparent', - }, - - - dashboardListItemIcon: { - width: 40, - height: 40, - marginLeft: 10, - opacity:0.7, - //marginTop: 50, - //backgroundColor: 'transparent', - alignSelf: 'flex-start', - }, - - dashboardListItemText: { - flex: 1, - flexDirection: 'column', - alignSelf: 'flex-start', - marginLeft: 20, - fontSize: 29, - color: '#47a292', - //color: '#98CA3F', - //color: '#644496', - flexWrap: 'wrap', - backgroundColor:'transparent', - }, - -}); - -module.exports = styles; -export default styles; diff --git a/examples/BodyMeasurements/index.ios.js b/examples/BodyMeasurements/index.ios.js deleted file mode 100644 index 4c771b724615ac0c2080c44c003e0348e433d7ad..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/index.ios.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * @flow - */ - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Navigator, - Text, - View -} from 'react-native'; - -let App = require('./app/app'); - -class BodyMeasurements extends Component { - render() { - return ( - - ) - } -} - -AppRegistry.registerComponent('BodyMeasurements', () => BodyMeasurements); diff --git a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj b/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj deleted file mode 100644 index 7e69275afdffedd67210b6463622af58d43fb0a8..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/project.pbxproj +++ /dev/null @@ -1,808 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; - 00E356F31AD99517003FC87E /* BodyMeasurementsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* BodyMeasurementsTests.m */; }; - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 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 */; }; - 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 */ - -/* Begin PBXContainerItemProxy section */ - 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTActionSheet; - }; - 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTGeolocation; - }; - 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; - remoteInfo = RCTVibration; - }; - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = BodyMeasurements; - }; - 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTSettings; - }; - 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; - 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 378DCB6B1D318E0700E83D06 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3774C88D1D2092F20000B3F3; - remoteInfo = RCTAppleHealthKit; - }; - 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTLinking; - }; - 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; - 00E356EE1AD99517003FC87E /* BodyMeasurementsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BodyMeasurementsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* BodyMeasurementsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BodyMeasurementsTests.m; sourceTree = ""; }; - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* BodyMeasurements.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BodyMeasurements.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = BodyMeasurements/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = BodyMeasurements/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = BodyMeasurements/Images.xcassets; sourceTree = ""; }; - 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 = ""; }; - 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 = ""; }; - 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 */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 378DCB6D1D318E0C00E83D06 /* libRCTAppleHealthKit.a in Frameworks */, - 146834051AC3E58100842450 /* libReact.a in Frameworks */, - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, - 37E9B8741D21B52F0090B19B /* HealthKit.framework in Frameworks */, - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00C302A81ABCB8CE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302B61ABCB90400DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302BC1ABCB91800DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302D41ABCB9D200DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302E01ABCB9EE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, - ); - name = Products; - sourceTree = ""; - }; - 00E356EF1AD99517003FC87E /* BodyMeasurementsTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* BodyMeasurementsTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = BodyMeasurementsTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 139105B71AF99BAD00B5F7CC /* Products */ = { - isa = PBXGroup; - children = ( - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, - ); - name = Products; - sourceTree = ""; - }; - 139FDEE71B06529A00C62182 /* Products */ = { - isa = PBXGroup; - children = ( - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* BodyMeasurements */ = { - isa = PBXGroup; - children = ( - 37E9B8751D21B52F0090B19B /* BodyMeasurements.entitlements */, - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = BodyMeasurements; - sourceTree = ""; - }; - 146834001AC3E56700842450 /* Products */ = { - isa = PBXGroup; - children = ( - 146834041AC3E56700842450 /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 378DCB681D318E0700E83D06 /* Products */ = { - isa = PBXGroup; - children = ( - 378DCB6C1D318E0700E83D06 /* libRCTAppleHealthKit.a */, - ); - name = Products; - sourceTree = ""; - }; - 78C398B11ACF4ADC00677621 /* Products */ = { - isa = PBXGroup; - children = ( - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, - ); - name = Products; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */, - 146833FF1AC3E56700842450 /* React.xcodeproj */, - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 832341B11AAA6A8300B99B32 /* Products */ = { - isa = PBXGroup; - children = ( - 832341B51AAA6A8300B99B32 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 37E9B8731D21B52F0090B19B /* HealthKit.framework */, - 13B07FAE1A68108700A75B9A /* BodyMeasurements */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* BodyMeasurementsTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* BodyMeasurements.app */, - 00E356EE1AD99517003FC87E /* BodyMeasurementsTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* BodyMeasurementsTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "BodyMeasurementsTests" */; - buildPhases = ( - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = BodyMeasurementsTests; - productName = BodyMeasurementsTests; - productReference = 00E356EE1AD99517003FC87E /* BodyMeasurementsTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* BodyMeasurements */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BodyMeasurements" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = BodyMeasurements; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* BodyMeasurements.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0610; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = 95ZTJFHCUG; - SystemCapabilities = { - com.apple.HealthKit = { - enabled = 1; - }; - }; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BodyMeasurements" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; - ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - }, - { - ProductGroup = 378DCB681D318E0700E83D06 /* Products */; - ProjectRef = 378DCB671D318E0700E83D06 /* RCTAppleHealthKit.xcodeproj */; - }, - { - ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; - ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - }, - { - ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; - ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - }, - { - ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; - ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - }, - { - ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; - ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; - ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - }, - { - ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; - ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; - ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - }, - { - ProductGroup = 139FDEE71B06529A00C62182 /* Products */; - ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 146834001AC3E56700842450 /* Products */; - ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* BodyMeasurements */, - 00E356ED1AD99517003FC87E /* BodyMeasurementsTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTActionSheet.a; - remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTGeolocation.a; - remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTVibration.a; - remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTSettings.a; - remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 146834041AC3E56700842450 /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 378DCB6C1D318E0700E83D06 /* libRCTAppleHealthKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTAppleHealthKit.a; - remoteRef = 378DCB6B1D318E0700E83D06 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTLinking.a; - remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* BodyMeasurementsTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* BodyMeasurements */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = BodyMeasurements; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = BodyMeasurementsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BodyMeasurements.app/BodyMeasurements"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = BodyMeasurementsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BodyMeasurements.app/BodyMeasurements"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = BodyMeasurements/BodyMeasurements.entitlements; - DEAD_CODE_STRIPPING = NO; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = BodyMeasurements/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = BodyMeasurements; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = BodyMeasurements/BodyMeasurements.entitlements; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = BodyMeasurements/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = BodyMeasurements; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "BodyMeasurementsTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BodyMeasurements" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BodyMeasurements" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/xcshareddata/xcschemes/BodyMeasurements.xcscheme b/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/xcshareddata/xcschemes/BodyMeasurements.xcscheme deleted file mode 100644 index f870783bca7a1d968850c973b7a2c7e9a1b282ff..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements.xcodeproj/xcshareddata/xcschemes/BodyMeasurements.xcscheme +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.h b/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.h deleted file mode 100644 index a9654d5e01b18c52fc334bdec2a796ce7e055dbf..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.h +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.m b/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.m deleted file mode 100644 index 56ee3b1e5ec6f3f2447a23362b27e7a421c4d55b..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/AppDelegate.m +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "AppDelegate.h" - -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation; - - /** - * Loading JavaScript code - uncomment the one you want. - * - * OPTION 1 - * Load from development server. Start the server from the repository root: - * - * $ npm start - * - * To run on device, change `localhost` to the IP address of your computer - * (you can get this by typing `ifconfig` into the terminal and selecting the - * `inet` value under `en0:`) and make sure your computer and iOS device are - * on the same Wi-Fi network. - */ - - jsCodeLocation = [NSURL URLWithString:@"http://192.168.0.14:8081/index.ios.bundle?platform=ios&dev=true"]; -// jsCodeLocation = [NSURL URLWithString:@"http://10.1.14.163:8081/index.ios.bundle?platform=ios&dev=true"]; - /** - * OPTION 2 - * Load from pre-bundled file on disk. The static bundle is automatically - * generated by the "Bundle React Native code and images" build step when - * running the project on an actual device or running the project on the - * simulator in the "Release" build configuration. - */ - -// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"BodyMeasurements" - initialProperties:nil - launchOptions:launchOptions]; - rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/Base.lproj/LaunchScreen.xib b/examples/BodyMeasurements/ios/BodyMeasurements/Base.lproj/LaunchScreen.xib deleted file mode 100644 index e403fcb53a087fd660d9e4c05be2d61431b00194..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/BodyMeasurements.entitlements b/examples/BodyMeasurements/ios/BodyMeasurements/BodyMeasurements.entitlements deleted file mode 100644 index e10f4302d524a2c6313dc968df134285905acfc8..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/BodyMeasurements.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.developer.healthkit - - - diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/BodyMeasurements/ios/BodyMeasurements/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f7461bf98b2bc7e061150d8021121ad277..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/Info.plist b/examples/BodyMeasurements/ios/BodyMeasurements/Info.plist deleted file mode 100644 index 1680bf7e82c75d70cc371b972e9ddfb804930c34..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/Info.plist +++ /dev/null @@ -1,48 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - healthkit - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/examples/BodyMeasurements/ios/BodyMeasurements/main.m b/examples/BodyMeasurements/ios/BodyMeasurements/main.m deleted file mode 100644 index 3d767fcbb9fced39e810debe402ff7f1ed523d34..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurements/main.m +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/examples/BodyMeasurements/ios/BodyMeasurementsTests/BodyMeasurementsTests.m b/examples/BodyMeasurements/ios/BodyMeasurementsTests/BodyMeasurementsTests.m deleted file mode 100644 index b29a0cfda15e7705f026e0c6da7199d0644792ae..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurementsTests/BodyMeasurementsTests.m +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import -#import - -#import "RCTLog.h" -#import "RCTRootView.h" - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" - -@interface BodyMeasurementsTests : XCTestCase - -@end - -@implementation BodyMeasurementsTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; - RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - - RCTSetLogFunction(RCTDefaultLogFunction); - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - - -@end diff --git a/examples/BodyMeasurements/ios/BodyMeasurementsTests/Info.plist b/examples/BodyMeasurements/ios/BodyMeasurementsTests/Info.plist deleted file mode 100644 index 886825ccc9bf0da2b9bfb8d8ebf0737db7ca1114..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/ios/BodyMeasurementsTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/examples/BodyMeasurements/package.json b/examples/BodyMeasurements/package.json deleted file mode 100644 index 42c0e9910ae06b5c0b8d1699078319a4032c5e3d..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "BodyMeasurements", - "version": "0.0.1", - "private": true, - "scripts": { - "start": "node node_modules/react-native/local-cli/cli.js start" - }, - "dependencies": { - "airflux": "^0.5.1", - "react": "15.1.0", - "react-mixin": "^2.0.2", - "react-native": "^0.28.0", - "react-native-apple-healthkit": "file:///Users/greg/Dev/experimental/RCTAppleHealthKit" - } -} diff --git a/examples/BodyMeasurements/src/components/Index.js b/examples/BodyMeasurements/src/components/Index.js deleted file mode 100644 index ec4791aacf03dcac2a66882d32bdd6bd68e8bbda..0000000000000000000000000000000000000000 --- a/examples/BodyMeasurements/src/components/Index.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Created by greg on 2016-06-27. - */ - - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Navigator, - Text, - View -} from 'react-native'; - - -class Index extends Component { - render() { - return ( - - - Index - - - ); - } -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#F5FCFF', - }, - welcome: { - fontSize: 20, - textAlign: 'center', - margin: 10, - }, - instructions: { - textAlign: 'center', - color: '#333333', - marginBottom: 5, - }, -}); - - -module.exports = Index; -export default Index; diff --git a/examples/StepsDemo/.flowconfig b/examples/StepsDemo/.flowconfig deleted file mode 100644 index 466bb117d90833062b718469907c061ea7989313..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/.flowconfig +++ /dev/null @@ -1,99 +0,0 @@ -[ignore] - -# We fork some components by platform. -.*/*.web.js -.*/*.android.js - -# Some modules have their own node_modules with overlap -.*/node_modules/node-haste/.* - -# Ugh -.*/node_modules/babel.* -.*/node_modules/babylon.* -.*/node_modules/invariant.* - -# Ignore react and fbjs where there are overlaps, but don't ignore -# anything that react-native relies on -.*/node_modules/fbjs/lib/Map.js -.*/node_modules/fbjs/lib/ErrorUtils.js - -# Flow has a built-in definition for the 'react' module which we prefer to use -# over the currently-untyped source -.*/node_modules/react/react.js -.*/node_modules/react/lib/React.js -.*/node_modules/react/lib/ReactDOM.js - -.*/__mocks__/.* -.*/__tests__/.* - -.*/commoner/test/source/widget/share.js - -# Ignore commoner tests -.*/node_modules/commoner/test/.* - -# See https://github.com/facebook/flow/issues/442 -.*/react-tools/node_modules/commoner/lib/reader.js - -# Ignore jest -.*/node_modules/jest-cli/.* - -# Ignore Website -.*/website/.* - -# Ignore generators -.*/local-cli/generator.* - -# Ignore BUCK generated folders -.*\.buckd/ - -# Ignore RNPM -.*/local-cli/rnpm/.* - -.*/node_modules/is-my-json-valid/test/.*\.json -.*/node_modules/iconv-lite/encodings/tables/.*\.json -.*/node_modules/y18n/test/.*\.json -.*/node_modules/spdx-license-ids/spdx-license-ids.json -.*/node_modules/spdx-exceptions/index.json -.*/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json -.*/node_modules/resolve/lib/core.json -.*/node_modules/jsonparse/samplejson/.*\.json -.*/node_modules/json5/test/.*\.json -.*/node_modules/ua-parser-js/test/.*\.json -.*/node_modules/builtin-modules/builtin-modules.json -.*/node_modules/binary-extensions/binary-extensions.json -.*/node_modules/url-regex/tlds.json -.*/node_modules/joi/.*\.json -.*/node_modules/isemail/.*\.json -.*/node_modules/tr46/.*\.json - - -[include] - -[libs] -node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow -flow/ - -[options] -module.system=haste - -esproposal.class_static_fields=enable -esproposal.class_instance_fields=enable - -experimental.strict_type_args=true - -munge_underscores=true - -module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FixMe - -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-6]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-6]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy - -[version] -^0.26.0 diff --git a/examples/StepsDemo/.gitignore b/examples/StepsDemo/.gitignore deleted file mode 100644 index eb1535e41e3df728de37aa551c2c387f8bbc31e0..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# OSX -# -.DS_Store - -# Xcode -# -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -project.xcworkspace - -# Android/IJ -# -*.iml -.idea -.gradle -local.properties - -# node.js -# -node_modules/ -npm-debug.log - -# BUCK -buck-out/ -\.buckd/ -android/app/libs -android/keystores/debug.keystore diff --git a/examples/StepsDemo/.watchmanconfig b/examples/StepsDemo/.watchmanconfig deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/examples/StepsDemo/README.md b/examples/StepsDemo/README.md deleted file mode 100644 index b1def8c7ea338641d32f385082ed4a4ef7858975..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Steps Demo - -![alt text](https://raw.githubusercontent.com/GregWilson/react-native-apple-healthkit/master/examples/images/steps_demo_screen.png "Steps Demo App Screenshot") - - diff --git a/examples/StepsDemo/app/app.js b/examples/StepsDemo/app/app.js deleted file mode 100644 index fa1f7e6c173bbf1a57fc8ccde7bd13485ddc6566..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/app/app.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Created by greg on 2016-06-30. - */ - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Navigator, - Text, - View -} from 'react-native'; - - -let Home = require('./components/home/index'); -let Add = require('./components/add/index'); - - -class StepsDemoApp extends Component { - render() { - return ( - - ); - } - - renderScene(route, navigator) { - if(route.name == 'Home') { - return - } - if(route.name == 'Add') { - return - } - } -} - -module.exports = StepsDemoApp; -export default StepsDemoApp; diff --git a/examples/StepsDemo/app/assets/images/healthkit_icon.png b/examples/StepsDemo/app/assets/images/healthkit_icon.png deleted file mode 100644 index f56f50bc8c4b44d34332d1f01e8473b537cad3d0..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/app/assets/images/healthkit_icon.png and /dev/null differ diff --git a/examples/StepsDemo/app/assets/images/steps.png b/examples/StepsDemo/app/assets/images/steps.png deleted file mode 100755 index a32c9940fe139b7d11f60be169ea8614e8139731..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/app/assets/images/steps.png and /dev/null differ diff --git a/examples/StepsDemo/app/assets/images/steps_alt.png b/examples/StepsDemo/app/assets/images/steps_alt.png deleted file mode 100644 index a246a4e2fc47af032838654dada59a43331a06fb..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/app/assets/images/steps_alt.png and /dev/null differ diff --git a/examples/StepsDemo/app/components/add/index.js b/examples/StepsDemo/app/components/add/index.js deleted file mode 100644 index 74e2cec746a9f0911056bb1fe53f72e7280c97b1..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/app/components/add/index.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Created by greg on 2016-06-30. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - ScrollView, - Text, - View -} from 'react-native'; -import TimerMixin from 'react-timer-mixin'; -var reactMixin = require('react-mixin'); -import styles from '../../styles/styles'; - - -class Add extends Component { - - constructor(props) { - super(props); - this.state = {}; - } - - componentDidMount() { - - } - - componentWillUnmount() { - - } - - _onPressItem(key) { - console.log('_onPressItem() ==> ', key); - let self = this; - this.requestAnimationFrame(() => { - this.props.navigator.push({ - name: key - }); - }) - } - - - render() { - return ( - - }/> - ); - } - - renderScene(route, navigator) { - return ( - - Add Steps - - ); - } -} - -reactMixin(Add.prototype, TimerMixin); - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return ( - {navigator.parentNavigator.pop()}}> - - Back - - - ); - }, - RightButton(route, navigator, index, nextState) { - return null; - }, - Title(route, navigator, index, nextState) { - return ( - - - Add Steps - - - ); - } -}; - - -module.exports = Add; -export default Add; \ No newline at end of file diff --git a/examples/StepsDemo/app/components/home/history.js b/examples/StepsDemo/app/components/home/history.js deleted file mode 100644 index 65e897d735c0dc4cb37efdcf7319dfb56e5efdf3..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/app/components/home/history.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Created by greg on 2016-06-30. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - TouchableHighlight, - ScrollView, - ListView, - RecyclerViewBackedScrollView, - Text, - View -} from 'react-native'; -import _ from 'lodash'; -import moment from 'moment'; - -//import TimerMixin from 'react-timer-mixin'; -//var reactMixin = require('react-mixin'); -import styles from '../../styles/styles'; - - -class History extends Component { - - constructor(props) { - super(props); - let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); - if(_.isArray(this.props.data)){ - ds = ds.cloneWithRows(this.props.data); - } - this.state = { - dataSource: ds, - }; - } - - componentDidMount() {} - - componentWillUnmount() {} - - - componentWillReceiveProps(newProps) { - if(newProps && newProps.data && _.isArray(newProps.data)){ - this.setState({ - dataSource: this.state.dataSource.cloneWithRows(newProps.data), - }); - } - } - - - render() { - return ( - } - /> - ); - } - - _renderRow(rowData: Object, sectionID: number, rowID: number, highlightRow: (sectionID: number, rowID: number) => void) { - - let m = moment(rowData.startDate); - let formattedDate = m.format('MMM Do YYYY'); - - return ( - { - //this._pressRow(rowID); - highlightRow(sectionID, rowID); - }}> - - - - - {rowData.value} - - - - - {formattedDate} - - - - - - ); - } - -} - -//reactMixin(History.prototype, TimerMixin); - - -module.exports = History; -export default History; diff --git a/examples/StepsDemo/app/components/home/index.js b/examples/StepsDemo/app/components/home/index.js deleted file mode 100644 index 88b893784051d3e59423ce1fe9477b14de2322ed..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/app/components/home/index.js +++ /dev/null @@ -1,243 +0,0 @@ -/** - * Created by greg on 2016-06-30. - */ - -import React, { Component } from 'react'; -import { - Navigator, - TouchableOpacity, - ScrollView, - Image, - Text, - View, - NativeAppEventEmitter, -} from 'react-native'; - -import AppleHealthKit from 'react-native-apple-healthkit'; -import styles from '../../styles/styles'; -import History from './history'; - -// setup the HealthKit initialization options -const HKPERMS = AppleHealthKit.Constants.Permissions; -const HKOPTIONS = { - permissions: { - read: [ - HKPERMS.StepCount, - HKPERMS.DistanceWalkingRunning, - HKPERMS.FlightsClimbed, - HKPERMS.Height, - HKPERMS.DateOfBirth, - HKPERMS.BiologicalSex, - HKPERMS.SleepAnalysis, - ], - write: [ - HKPERMS.StepCount - ], - } -}; - -/** - * React Component - */ -class Home extends Component { - - constructor(props) { - super(props); - this.state = { - stepsToday: 0, - stepHistory: [], - }; - } - - /** - * if HealthKit is available on the device then initialize it - * with the permissions set above in HKOPTIONS. on successful - * initialization fetch today's steps and the step history - */ - componentDidMount() { - AppleHealthKit.isAvailable((err,available) => { - if(available){ - AppleHealthKit.initHealthKit(HKOPTIONS, (err, res) => { - if(this._handleHKError(err, 'initHealthKit')){ - return; - } - - AppleHealthKit.initStepCountObserver({}, () => {}); - - var subscription = NativeAppEventEmitter.addListener( - 'change:steps', - (evt) => { - console.log('change:steps EVENT!! : ', evt); - this._fetchStepsToday(); - } - ); - - this.sub = subscription; - - this._fetchStepsToday(); - this._fetchStepsHistory(); - - this._fetchSleepAnalysis(); - }); - } - }); - } - - componentWillUnmount() { - this.sub.remove(); - } - - /** - * get today's step count from HealthKit. on success update - * the component state - * @private - */ - _fetchStepsToday() { - AppleHealthKit.getStepCount(null, (err, res) => { - if(this._handleHKError(err, 'getStepCount')){ - return; - } - this.setState({stepsToday: res.value}); - }); - } - - /** - * get the step history from options.startDate through the - * current time. on success update the component state - * @private - */ - _fetchStepsHistory() { - let options = { - startDate: (new Date(2016,4,1)).toISOString(), - }; - AppleHealthKit.getDailyStepCountSamples(options, (err, res) => { - if(this._handleHKError(err, 'getDailyStepCountSamples')){ - return; - } - this.setState({stepHistory: res}); - }); - } - - - - _fetchSleepAnalysis() { - let options = { - startDate: (new Date(2016,10,1)).toISOString(), - }; - AppleHealthKit.getSleepSamples(options, (err, res) => { - if(this._handleHKError(err, 'getSleepSamples')){ - return; - } - //this.setState({stepHistory: res}); - - console.log('######################################') - console.log('### SLEEP SAMPLES ###') - console.log('######################################') - console.log(res) - - }); - } - - - - - /** - * render the Navigator which will render the navigation - * bar and the scene - * @returns {XML} - */ - render() { - return ( - - }/> - ); - } - - /** - * render the scene - * @param route - * @param navigator - * @returns {XML} - */ - renderScene(route, navigator) { - return ( - - - - - - - - Today's Steps - - - {this.state.stepsToday} - - - - - - - History - - - - - - - ); - } - - /** - * if 'err' is truthy then log the error message and - * return true indicating an error has occurred - * @param err - * @param method - * @returns {boolean} - * @private - */ - _handleHKError(err, method) : boolean { - if(err){ - let errStr = 'HealthKit_ERROR['+method+'] : '; - errStr += (err && err.message) ? err.message : err; - console.log(errStr); - return true; - } - return false; - } -} - - -var NavigationBarRouteMapper = { - LeftButton(route, navigator, index, nextState) { - return null; - }, - RightButton(route, navigator, index, nextState) { - return ( - { navigator.parentNavigator.push({name: 'Add'})}}> - - + - - - ); - }, - Title(route, navigator, index, nextState) { - return ( - - - HealthKit Steps - - - ); - } -}; - -module.exports = Home; -export default Home; diff --git a/examples/StepsDemo/app/styles/styles.js b/examples/StepsDemo/app/styles/styles.js deleted file mode 100644 index d1e1936e575bdd940c995dcb5a967fc6ec8dc02c..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/app/styles/styles.js +++ /dev/null @@ -1,276 +0,0 @@ -/** - * Created by greg on 2016-06-30. - */ - - -import { - Platform, - StyleSheet -} from 'react-native'; - - - -const styles = StyleSheet.create({ - - sceneContainerWithNavbar: { - flex: 1, - flexDirection: 'column', - //justifyContent: 'flex-start', - //alignItems: 'flex-start', - marginTop: (Platform.OS === 'ios') ? 64 : 54, - backgroundColor: '#FFFFFF' - }, - - navigationBar: { - borderBottomWidth: 1, - borderBottomColor: '#cccccc', - backgroundColor: '#f5f5f5' - }, - - navbarTitleTouchable: { - flex: 1, - justifyContent: 'center' - }, - navbarTitle: { - color: '#FD2D55', - margin: 10, - fontSize: 18 - }, - navbarPlusButton: { - fontSize:33, - marginRight:13, - color: '#FD2D55', - top: -3 - }, - - - stepsContainer: { - height:100, - backgroundColor: '#FAFAFA', - //backgroundColor: '#FF8000', - }, - - stepsIcon: { - width: 60, - height: 60, - marginLeft: 20, - marginTop: 20, - //marginTop: 50, - //backgroundColor: 'transparent', - alignSelf: 'flex-start', - }, - - stepsLabel: { - fontSize:12, - color: '#FD2D55', - position:'absolute', - left: 105, - top:11, - }, - - stepsValue: { - fontSize:50, - color: '#47a292', - position:'absolute', - left: 105, - top:25, - }, - - - historyContainer: { - flex: 1, - //backgroundColor: '#0088cc', - }, - - - - titleRow: { - height:40, - alignItems: 'center', - //backgroundColor: '#FF00FF' - borderTopColor: '#DDDDDD', - borderBottomColor: '#DDDDDD', - borderTopWidth: 1, - borderBottomWidth: 1, - paddingTop:10, - backgroundColor: '#EFEFEF', - }, - - - listViewRow: { - flexDirection: 'row', - justifyContent: 'center', - padding: 10, - backgroundColor: '#F6F6F6', - borderBottomColor: '#DADADA', - borderBottomWidth: 1, - }, - - - - - - - row_1_3: { - flex: 0.33, - flexDirection:'column', - padding:10, - //backgroundColor: '#FF8000' - }, - - row_2_3: { - flex: 0.66, - flexDirection:'column', - padding:10, - //backgroundColor: '#0088cc' - }, - - - col_1_3: { - flex: 0.33, - flexDirection:'row', - padding:10, - //backgroundColor: '#FF8000' - }, - - col_2_3: { - flex: 0.66, - flexDirection:'row', - padding:10, - //backgroundColor: '#0088cc' - }, - - - borderTopLightGrey: { - borderTopColor: '#CCCCCC', - borderTopWidth: 1, - }, - - largeCenteredText: { - textAlign: 'center', - flexDirection:'row', - fontSize:34, - marginTop:60, - }, - - dashboardListItemLabel: { - fontSize:12, - color: '#FD2D55', - position:'absolute', - left: 70, - top:0, - }, - - dashboardListItemValue: { - fontSize:22, - color: '#47a292', - position:'absolute', - left: 70, - top:15, - }, - - sceneContainerFull: { - flex: 1, - flexDirection: 'column', - //justifyContent: 'flex-start', - //alignItems: 'flex-start', - marginTop: 0, - backgroundColor: '#FFFFFF' - }, - - - dashboardToday: { - height: 30, - alignItems: 'stretch', - justifyContent: 'center', - alignItems: 'center', - backgroundColor: 'rgba(162, 162, 162, 0.2)', - }, - dashboardTodayText: { - - color: '#a2a2a2', - }, - - dashboardListItemHighlight: { - flexDirection: 'row', - alignSelf: 'stretch', - justifyContent: 'center', - //flex:1, - //alignSelf: 'stretch', - //overflow: 'hidden', - }, - - dashboardListItemView: { - flex: 1, - //backgroundColor: '#FDFDFD', - backgroundColor: '#FDFDFD', - //paddingTop:74, - //flexDirection: 'row', - flexDirection: 'column', - alignSelf: 'stretch', - justifyContent: 'flex-start', - alignItems: 'flex-start', - paddingTop:15, - paddingBottom: 15, - - //flexWrap: 'wrap', - - borderBottomColor: '#AAAAAA', - borderBottomWidth: 1, - }, - - dashboardListItemViewTransparent: { - flex: 1, - //backgroundColor: '#FDFDFD', - backgroundColor: 'transparent', - //paddingTop:74, - //flexDirection: 'row', - flexDirection: 'column', - alignSelf: 'stretch', - justifyContent: 'flex-start', - alignItems: 'flex-start', - paddingTop:15, - paddingBottom: 15, - - //flexWrap: 'wrap', - - borderBottomColor: '#AAAAAA', - borderBottomWidth: 1, - }, - - dashboardListItem: { - flexDirection: 'row', - alignSelf: 'stretch', - justifyContent: 'space-between', - flex:1, - backgroundColor: 'transparent', - }, - - - dashboardListItemIcon: { - width: 40, - height: 40, - marginLeft: 10, - opacity:0.7, - //marginTop: 50, - //backgroundColor: 'transparent', - alignSelf: 'flex-start', - }, - - dashboardListItemText: { - flex: 1, - flexDirection: 'column', - alignSelf: 'flex-start', - marginLeft: 20, - fontSize: 29, - color: '#47a292', - //color: '#98CA3F', - //color: '#644496', - flexWrap: 'wrap', - backgroundColor:'transparent', - }, - -}); - -module.exports = styles; -export default styles; \ No newline at end of file diff --git a/examples/StepsDemo/index.ios.js b/examples/StepsDemo/index.ios.js deleted file mode 100644 index db10c642bcb798081c01a76ead6855d8fa5c4e17..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/index.ios.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * @flow - */ - -import React, { Component } from 'react'; -import { - AppRegistry, - StyleSheet, - Text, - View -} from 'react-native'; - -require('RCTNativeAppEventEmitter') - -import App from './app/app'; - -class StepsDemo extends Component { - render() { - return ( - - ); - } -} - -AppRegistry.registerComponent('StepsDemo', () => StepsDemo); diff --git a/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj b/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj deleted file mode 100644 index e0009b6ce17e3305140e3251cbfdc61655477748..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,816 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; - 00E356F31AD99517003FC87E /* StepsDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StepsDemoTests.m */; }; - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 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 */; }; - 37837E961DCFE49D000201A0 /* libRCTAppleHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 37837E951DCFE493000201A0 /* libRCTAppleHealthKit.a */; }; - 378616B61D257B040027C300 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 378616B51D257B040027C300 /* HealthKit.framework */; }; - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTActionSheet; - }; - 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTGeolocation; - }; - 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5115D1A9E6B3D00147676; - remoteInfo = RCTImage; - }; - 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B511DB1A9E6C8500147676; - remoteInfo = RCTNetwork; - }; - 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; - remoteInfo = RCTVibration; - }; - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = StepsDemo; - }; - 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTSettings; - }; - 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3C86DF461ADF2C930047B81A; - remoteInfo = RCTWebSocket; - }; - 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = React; - }; - 37837E941DCFE493000201A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 37837E901DCFE493000201A0 /* RCTAppleHealthKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3774C88D1D2092F20000B3F3; - remoteInfo = RCTAppleHealthKit; - }; - 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RCTLinking; - }; - 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 58B5119B1A9E6C1200147676; - remoteInfo = RCTText; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; - 00E356EE1AD99517003FC87E /* StepsDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StepsDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* StepsDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StepsDemoTests.m; sourceTree = ""; }; - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* StepsDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StepsDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StepsDemo/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = StepsDemo/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StepsDemo/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StepsDemo/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StepsDemo/main.m; sourceTree = ""; }; - 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 37837E901DCFE493000201A0 /* RCTAppleHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAppleHealthKit.xcodeproj; path = "../node_modules/react-native-apple-healthkit/RCTAppleHealthKit.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 = ""; }; - 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 */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 37837E961DCFE49D000201A0 /* libRCTAppleHealthKit.a in Frameworks */, - 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - 146834051AC3E58100842450 /* libReact.a in Frameworks */, - 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, - 378616B61D257B040027C300 /* HealthKit.framework in Frameworks */, - 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, - 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, - 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, - 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, - 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, - 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00C302A81ABCB8CE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302B61ABCB90400DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302BC1ABCB91800DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302D41ABCB9D200DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, - ); - name = Products; - sourceTree = ""; - }; - 00C302E01ABCB9EE00DB3ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, - ); - name = Products; - sourceTree = ""; - }; - 00E356EF1AD99517003FC87E /* StepsDemoTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* StepsDemoTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = StepsDemoTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 139105B71AF99BAD00B5F7CC /* Products */ = { - isa = PBXGroup; - children = ( - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, - ); - name = Products; - sourceTree = ""; - }; - 139FDEE71B06529A00C62182 /* Products */ = { - isa = PBXGroup; - children = ( - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, - ); - name = Products; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* StepsDemo */ = { - isa = PBXGroup; - children = ( - 378616B71D257B040027C300 /* StepsDemo.entitlements */, - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = StepsDemo; - sourceTree = ""; - }; - 146834001AC3E56700842450 /* Products */ = { - isa = PBXGroup; - children = ( - 146834041AC3E56700842450 /* libReact.a */, - ); - name = Products; - sourceTree = ""; - }; - 37837E911DCFE493000201A0 /* Products */ = { - isa = PBXGroup; - children = ( - 37837E951DCFE493000201A0 /* libRCTAppleHealthKit.a */, - ); - name = Products; - sourceTree = ""; - }; - 78C398B11ACF4ADC00677621 /* Products */ = { - isa = PBXGroup; - children = ( - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, - ); - name = Products; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - 37837E901DCFE493000201A0 /* RCTAppleHealthKit.xcodeproj */, - 146833FF1AC3E56700842450 /* React.xcodeproj */, - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - ); - name = Libraries; - sourceTree = ""; - }; - 832341B11AAA6A8300B99B32 /* Products */ = { - isa = PBXGroup; - children = ( - 832341B51AAA6A8300B99B32 /* libRCTText.a */, - ); - name = Products; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 378616B51D257B040027C300 /* HealthKit.framework */, - 13B07FAE1A68108700A75B9A /* StepsDemo */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* StepsDemoTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* StepsDemo.app */, - 00E356EE1AD99517003FC87E /* StepsDemoTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* StepsDemoTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StepsDemoTests" */; - buildPhases = ( - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = StepsDemoTests; - productName = StepsDemoTests; - productReference = 00E356EE1AD99517003FC87E /* StepsDemoTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* StepsDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StepsDemo" */; - buildPhases = ( - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = StepsDemo; - productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* StepsDemo.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0610; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = 95ZTJFHCUG; - SystemCapabilities = { - com.apple.HealthKit = { - enabled = 1; - }; - }; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "StepsDemo" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; - ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; - }, - { - ProductGroup = 37837E911DCFE493000201A0 /* Products */; - ProjectRef = 37837E901DCFE493000201A0 /* RCTAppleHealthKit.xcodeproj */; - }, - { - ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; - ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; - }, - { - ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; - ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; - }, - { - ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; - ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; - }, - { - ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; - ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; - }, - { - ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; - ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; - }, - { - ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; - ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; - }, - { - ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; - ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; - }, - { - ProductGroup = 139FDEE71B06529A00C62182 /* Products */; - ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - }, - { - ProductGroup = 146834001AC3E56700842450 /* Products */; - ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* StepsDemo */, - 00E356ED1AD99517003FC87E /* StepsDemoTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTActionSheet.a; - remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTGeolocation.a; - remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTImage.a; - remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTNetwork.a; - remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTVibration.a; - remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTSettings.a; - remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTWebSocket.a; - remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 146834041AC3E56700842450 /* libReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReact.a; - remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 37837E951DCFE493000201A0 /* libRCTAppleHealthKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTAppleHealthKit.a; - remoteRef = 37837E941DCFE493000201A0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTLinking.a; - remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRCTText.a; - remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* StepsDemoTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* StepsDemo */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = StepsDemo; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = StepsDemoTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StepsDemo.app/StepsDemo"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = StepsDemoTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StepsDemo.app/StepsDemo"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = StepsDemo/StepsDemo.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEAD_CODE_STRIPPING = NO; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = StepsDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = StepsDemo; - PROVISIONING_PROFILE = ""; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = StepsDemo/StepsDemo.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - INFOPLIST_FILE = StepsDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = StepsDemo; - PROVISIONING_PROFILE = ""; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ""; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../node_modules/react-native/React/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StepsDemoTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StepsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "StepsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/examples/StepsDemo/ios/StepsDemo.xcodeproj/xcshareddata/xcschemes/StepsDemo.xcscheme b/examples/StepsDemo/ios/StepsDemo.xcodeproj/xcshareddata/xcschemes/StepsDemo.xcscheme deleted file mode 100644 index 6095ca1422f2bdf2908fa67354d0bf18a58f4fb6..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo.xcodeproj/xcshareddata/xcschemes/StepsDemo.xcscheme +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/StepsDemo/ios/StepsDemo/AppDelegate.h b/examples/StepsDemo/ios/StepsDemo/AppDelegate.h deleted file mode 100644 index a9654d5e01b18c52fc334bdec2a796ce7e055dbf..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/AppDelegate.h +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/examples/StepsDemo/ios/StepsDemo/AppDelegate.m b/examples/StepsDemo/ios/StepsDemo/AppDelegate.m deleted file mode 100644 index 00d6637d59a654885dc4362c38ad33f08cd2047a..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/AppDelegate.m +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "AppDelegate.h" - -#import "RCTRootView.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - NSURL *jsCodeLocation; - - /** - * Loading JavaScript code - uncomment the one you want. - * - * OPTION 1 - * Load from development server. Start the server from the repository root: - * - * $ npm start - * - * To run on device, change `localhost` to the IP address of your computer - * (you can get this by typing `ifconfig` into the terminal and selecting the - * `inet` value under `en0:`) and make sure your computer and iOS device are - * on the same Wi-Fi network. - */ -// - jsCodeLocation = [NSURL URLWithString:@"http://192.168.0.12:8081/index.ios.bundle?platform=ios&dev=true"]; -// jsCodeLocation = [NSURL URLWithString:@"http://10.1.14.163:8081/index.ios.bundle?platform=ios&dev=true"]; - /** - * OPTION 2 - * Load from pre-bundled file on disk. The static bundle is automatically - * generated by the "Bundle React Native code and images" build step when - * running the project on an actual device or running the project on the - * simulator in the "Release" build configuration. - */ - -// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"StepsDemo" - initialProperties:nil - launchOptions:launchOptions]; - rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/examples/StepsDemo/ios/StepsDemo/Base.lproj/LaunchScreen.xib b/examples/StepsDemo/ios/StepsDemo/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 39140bf453346f6db843216712766ac61e3be784..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 1a9126bac71460150685dd238c86e59038580a03..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 2cebaea621aaa0eb9c121e53ca7030f6b0d88b48..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ 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 deleted file mode 100644 index 61e7ddd8e20de1d9765ab2514c9083d8f7f6e284..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index bde1792adb28a71a0537a2dbc01bce6976c433f8..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ 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 deleted file mode 100644 index 334a19dac0f4b96adee9b3cd10e47adce48e4cb4..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index aa073575bf3f45c8e6a5c6498bcf6e55d2a969a8..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index af9f5bbf9fe0cb3a1de78c00e269d8fffd19253d..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png deleted file mode 100644 index a30dfe3af2e90ca4d928202f658655f8c4f2d6c8..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png and /dev/null differ 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 deleted file mode 100644 index af9f5bbf9fe0cb3a1de78c00e269d8fffd19253d..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 8d8413c5a106e79c489670dea10974233fcd349e..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 6125536a763cc0f0e8cd019366cb36bd9a6f1dd7..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ 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 deleted file mode 100644 index ee3a9528a7c16c0f90a999d1e821bc24778562a7..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png deleted file mode 100644 index 547c71db303159157049b466dafe38392029e30f..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png and /dev/null differ 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 deleted file mode 100644 index bc33d5be0b755c5816cd8db2669ba7d6fcc0bf02..0000000000000000000000000000000000000000 Binary files a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/Contents.json b/examples/StepsDemo/ios/StepsDemo/Images.xcassets/Contents.json deleted file mode 100644 index da4a164c918651cdd1e11dca5cc62c333f097601..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/StepsDemo/ios/StepsDemo/Info.plist b/examples/StepsDemo/ios/StepsDemo/Info.plist deleted file mode 100644 index 1680bf7e82c75d70cc371b972e9ddfb804930c34..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/Info.plist +++ /dev/null @@ -1,48 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - healthkit - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/examples/StepsDemo/ios/StepsDemo/StepsDemo.entitlements b/examples/StepsDemo/ios/StepsDemo/StepsDemo.entitlements deleted file mode 100644 index e10f4302d524a2c6313dc968df134285905acfc8..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/StepsDemo.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.developer.healthkit - - - diff --git a/examples/StepsDemo/ios/StepsDemo/main.m b/examples/StepsDemo/ios/StepsDemo/main.m deleted file mode 100644 index 3d767fcbb9fced39e810debe402ff7f1ed523d34..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemo/main.m +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/examples/StepsDemo/ios/StepsDemoTests/Info.plist b/examples/StepsDemo/ios/StepsDemoTests/Info.plist deleted file mode 100644 index 886825ccc9bf0da2b9bfb8d8ebf0737db7ca1114..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemoTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/examples/StepsDemo/ios/StepsDemoTests/StepsDemoTests.m b/examples/StepsDemo/ios/StepsDemoTests/StepsDemoTests.m deleted file mode 100644 index fd5ac5949b02e73c46b9667b2235b47f027fef82..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/ios/StepsDemoTests/StepsDemoTests.m +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import -#import - -#import "RCTLog.h" -#import "RCTRootView.h" - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" - -@interface StepsDemoTests : XCTestCase - -@end - -@implementation StepsDemoTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; - RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - - RCTSetLogFunction(RCTDefaultLogFunction); - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - - -@end diff --git a/examples/StepsDemo/package.json b/examples/StepsDemo/package.json deleted file mode 100644 index 2b59238cde8cdd537c519b1a34b499bdd87e78f1..0000000000000000000000000000000000000000 --- a/examples/StepsDemo/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "StepsDemo", - "version": "0.0.1", - "private": true, - "scripts": { - "start": "node node_modules/react-native/local-cli/cli.js start" - }, - "dependencies": { - "lodash": "^4.13.1", - "react": "15.1.0", - "react-mixin": "^2.0.2", - "react-native": "^0.28.0" - } -} diff --git a/examples/images/IMG_0205.PNG b/examples/images/IMG_0205.PNG deleted file mode 100644 index 13040f132577232edb1c9ea8df80be277b03e896..0000000000000000000000000000000000000000 Binary files a/examples/images/IMG_0205.PNG and /dev/null differ diff --git a/examples/images/body_measurements_demo_screen.png b/examples/images/body_measurements_demo_screen.png deleted file mode 100644 index 59102963e1be1be08e334c91f39eb8ba5a1e52ce..0000000000000000000000000000000000000000 Binary files a/examples/images/body_measurements_demo_screen.png and /dev/null differ diff --git a/examples/images/body_measurements_demo_screenshot.png b/examples/images/body_measurements_demo_screenshot.png deleted file mode 100644 index 3537ebf6ba7f5b5e2dd29ca73b648afd93aab7b0..0000000000000000000000000000000000000000 Binary files a/examples/images/body_measurements_demo_screenshot.png and /dev/null differ diff --git a/examples/images/steps_demo_screen.png b/examples/images/steps_demo_screen.png deleted file mode 100644 index f55691f8c0104896dd72c4c94d86a064440bdfb9..0000000000000000000000000000000000000000 Binary files a/examples/images/steps_demo_screen.png and /dev/null differ diff --git a/examples/images/steps_demo_screenshot.png b/examples/images/steps_demo_screenshot.png deleted file mode 100644 index 4da3fc4a1722d79bddbe578b28218bf46d8fed6b..0000000000000000000000000000000000000000 Binary files a/examples/images/steps_demo_screenshot.png and /dev/null differ diff --git a/examples/images/Capabilities_HealthKit.png b/images/Capabilities_HealthKit.png similarity index 100% rename from examples/images/Capabilities_HealthKit.png rename to images/Capabilities_HealthKit.png diff --git a/package.json b/package.json index ca5aa4fc346ad4faa7487090f1e4a112f241dd35..6c2dbdaf2e3a3510591cd64c95dcadb758dd9aee 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,11 @@ { - "name": "react-native-apple-healthkit", - "version": "0.2.1", - "description": "A React Native bridge module for interacting with Apple HealthKit data", + "name": "rn-apple-healthkit", + "version": "0.4.0", + "description": "A React Native package for interacting with Apple HealthKit", "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "repository": { "type": "git", - "url": "git+https://github.com/GregWilson/react-native-apple-healthkit.git" + "url": "git+https://github.com/terrillo/rn-apple-healthkit.git" }, "keywords": [ "Apple", @@ -20,12 +17,12 @@ "native", "ios" ], - "author": "Greg Wilson", + "author": "Terrillo Walls", "license": "MIT", "devDependencies": { - "react-native": ">=0.28.0" + "react-native": ">=0.40.0" }, "peerDependencies": { - "react-native": ">=0.28.0" + "react-native": ">=0.40.0" } }