├── .eslintrc ├── index.js ├── .editorconfig ├── examples └── RCTHealthKitExample │ ├── iOS │ ├── RCTHealthKitExample │ │ ├── RCTHealthKitExample.entitlements │ │ ├── main.jsbundle │ │ ├── AppDelegate.h │ │ ├── main.m │ │ ├── Images.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── Info.plist │ │ ├── AppDelegate.m │ │ └── Base.lproj │ │ │ └── LaunchScreen.xib │ ├── RCTHealthKitExampleTests │ │ ├── Info.plist │ │ └── RCTHealthKitExampleTests.m │ └── RCTHealthKitExample.xcodeproj │ │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RCTHealthKitExample.xcscheme │ │ └── project.pbxproj │ ├── package.json │ ├── .npmignore │ ├── .gitignore │ ├── src │ └── components │ │ ├── Empty.js │ │ ├── Characteristics.js │ │ ├── Index.js │ │ └── StaticList.js │ ├── index.ios.js │ └── .flowconfig ├── .gitignore ├── RCTHealthKit ├── RCTHealthKit.h └── RCTHealthKit.m ├── .npmignore ├── README.md ├── package.json ├── RCTHealthKitTests └── Info.plist ├── .flowconfig └── RCTHealthKit.xcodeproj └── project.pbxproj /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": ["standard", "standard-react"] 4 | } 5 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let { HealthKit } = require('react-native').NativeModules 4 | module.exports = HealthKit 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/RCTHealthKitExample.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.healthkit 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleExample", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node_modules/react-native/packager/packager.sh" 7 | }, 8 | "dependencies": { 9 | "debug": "^2.2.0", 10 | "invariant": "^2.1.0", 11 | "lodash": "^3.10.1", 12 | "react-native": "^0.10.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/main.jsbundle: -------------------------------------------------------------------------------- 1 | // Offline JS 2 | // To re-generate the offline bundle, run this from the root of your project: 3 | // 4 | // $ react-native bundle --minify 5 | // 6 | // See http://facebook.github.io/react-native/docs/runningondevice.html for more details. 7 | 8 | throw new Error('Offline JS file is empty. See iOS/main.jsbundle for instructions'); 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # node.js 26 | # 27 | node_modules/ 28 | npm-debug.log 29 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/.npmignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # node.js 25 | # 26 | node_modules/ 27 | npm-debug.log 28 | -------------------------------------------------------------------------------- /RCTHealthKit/RCTHealthKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // RCTHealthKit.h 3 | // RCTHealthKit 4 | // 5 | // Created by Spencer Elliott on 2015-09-06. 6 | // Copyright (c) 2015 Facebook. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RCTBridgeModule.h" 11 | 12 | @import HealthKit; 13 | 14 | @interface RCTHealthKit : NSObject 15 | 16 | @property (readonly) HKHealthStore *healthStore; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # node.js 26 | # 27 | node_modules/ 28 | npm-debug.log 29 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # node.js 26 | # 27 | node_modules/ 28 | npm-debug.log 29 | 30 | # examples 31 | # 32 | /examples/ 33 | 34 | # tests 35 | # 36 | /RCTHealthKitTests/ 37 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/src/components/Empty.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let React = require('react-native') 4 | let { 5 | StyleSheet, 6 | Text, 7 | View 8 | } = React 9 | 10 | let Empty = React.createClass({ 11 | render () { 12 | return ( 13 | 14 | No content 15 | 16 | ) 17 | } 18 | }) 19 | 20 | let styles = StyleSheet.create({ 21 | container: { 22 | flex: 1, 23 | alignItems: 'center', 24 | justifyContent: 'center' 25 | } 26 | }) 27 | 28 | module.exports = Empty 29 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-native-healthkit 2 | A React Native bridge module to access iOS HealthKit APIs 3 | 4 | [![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/) 5 | 6 | ## Looking for a maintainer 7 | 8 | Comment on [#3](https://github.com/elliottsj/react-native-healthkit/issues/3) if you'd like to take over this project. 9 | 10 | ## Installation 11 | 12 | Follow https://facebook.github.io/react-native/docs/linking-libraries-ios.html#manual-linking, then: 13 | 14 | ```js 15 | import HealthKit from 'react-native-healthkit'; 16 | 17 | // ... 18 | 19 | HealthKit.isHealthDataAvailable((err, result) => { 20 | // ... 21 | }); 22 | ``` 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-healthkit", 3 | "version": "0.0.1", 4 | "description": "A React Native bridge module to access iOS HealthKit APIs", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "react", 11 | "react-component", 12 | "native", 13 | "healthkit" 14 | ], 15 | "author": "Spencer Elliott ", 16 | "license": "MIT", 17 | "devDependencies": { 18 | "babel-eslint": "^4.1.0", 19 | "eslint": "^1.3.1", 20 | "eslint-config-standard": "^4.1.0", 21 | "eslint-config-standard-react": "^1.0.4", 22 | "eslint-plugin-react": "^3.3.0", 23 | "eslint-plugin-standard": "^1.3.0" 24 | }, 25 | "peerDependencies": { 26 | "react-native": "^0.10.1" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /RCTHealthKitTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.elliottsj.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExampleTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.elliottsj.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/index.ios.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let React = require('react-native') 4 | let { 5 | AppRegistry, 6 | NavigatorIOS, 7 | StyleSheet, 8 | Text, 9 | View, 10 | } = React 11 | let HealthKit = require('react-native-healthkit') 12 | 13 | let Index = require('./src/components/Index') 14 | 15 | let SimpleExample = React.createClass({ 16 | getInitialState () { 17 | return { isHealthDataAvailable: false } 18 | }, 19 | 20 | componentWillMount () { 21 | HealthKit.isHealthDataAvailable((err, result) => { 22 | this.setState({ err, isHealthDataAvailable: result }) 23 | }) 24 | }, 25 | 26 | render () { 27 | let { isHealthDataAvailable } = this.state 28 | 29 | if (!isHealthDataAvailable) { 30 | return ( 31 | 32 | No health data available 33 | 34 | ) 35 | } 36 | 37 | return ( 38 | 45 | ) 46 | } 47 | }) 48 | 49 | let styles = StyleSheet.create({ 50 | container: { flex: 1 }, 51 | centered: { 52 | flex: 1, 53 | alignItems: 'center', 54 | justifyContent: 'center' 55 | } 56 | }) 57 | 58 | AppRegistry.registerComponent('SimpleExample', () => SimpleExample) 59 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | # We fork some components by platform. 4 | .*/*.web.js 5 | .*/*.android.js 6 | 7 | # Some modules have their own node_modules with overlap 8 | .*/node_modules/node-haste/.* 9 | 10 | # Ignore react-tools where there are overlaps, but don't ignore anything that 11 | # react-native relies on 12 | .*/node_modules/react-tools/src/React.js 13 | .*/node_modules/react-tools/src/renderers/shared/event/EventPropagators.js 14 | .*/node_modules/react-tools/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js 15 | .*/node_modules/react-tools/src/shared/vendor/core/ExecutionEnvironment.js 16 | 17 | 18 | # Ignore commoner tests 19 | .*/node_modules/commoner/test/.* 20 | 21 | # See https://github.com/facebook/flow/issues/442 22 | .*/react-tools/node_modules/commoner/lib/reader.js 23 | 24 | # Ignore jest 25 | .*/react-native/node_modules/jest-cli/.* 26 | 27 | [include] 28 | 29 | [libs] 30 | node_modules/react-native/Libraries/react-native/react-native-interface.js 31 | 32 | [options] 33 | module.system=haste 34 | 35 | munge_underscores=true 36 | 37 | suppress_type=$FlowIssue 38 | suppress_type=$FlowFixMe 39 | suppress_type=$FixMe 40 | 41 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 42 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ 43 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 44 | 45 | [version] 46 | 0.14.0 47 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | # We fork some components by platform. 4 | .*/*.web.js 5 | .*/*.android.js 6 | 7 | # Some modules have their own node_modules with overlap 8 | .*/node_modules/node-haste/.* 9 | 10 | # Ignore react-tools where there are overlaps, but don't ignore anything that 11 | # react-native relies on 12 | .*/node_modules/react-tools/src/React.js 13 | .*/node_modules/react-tools/src/renderers/shared/event/EventPropagators.js 14 | .*/node_modules/react-tools/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js 15 | .*/node_modules/react-tools/src/shared/vendor/core/ExecutionEnvironment.js 16 | 17 | 18 | # Ignore commoner tests 19 | .*/node_modules/commoner/test/.* 20 | 21 | # See https://github.com/facebook/flow/issues/442 22 | .*/react-tools/node_modules/commoner/lib/reader.js 23 | 24 | # Ignore jest 25 | .*/react-native/node_modules/jest-cli/.* 26 | 27 | [include] 28 | 29 | [libs] 30 | node_modules/react-native/Libraries/react-native/react-native-interface.js 31 | 32 | [options] 33 | module.system=haste 34 | 35 | munge_underscores=true 36 | 37 | suppress_type=$FlowIssue 38 | suppress_type=$FlowFixMe 39 | suppress_type=$FixMe 40 | 41 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 42 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ 43 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 44 | 45 | [version] 46 | 0.14.0 47 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.elliottsj.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSAllowsArbitraryLoads 28 | 29 | 30 | NSLocationWhenInUseUsageDescription 31 | 32 | UILaunchStoryboardName 33 | LaunchScreen 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | healthkit 38 | 39 | UISupportedInterfaceOrientations 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationLandscapeLeft 43 | UIInterfaceOrientationLandscapeRight 44 | 45 | UIViewControllerBasedStatusBarAppearance 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/src/components/Characteristics.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let debug = require('debug')('RCTHealthKitExample:components:Characteristics') 4 | let React = require('react-native') 5 | let { 6 | NativeModules, 7 | StyleSheet, 8 | Text, 9 | View 10 | } = React 11 | let HealthKit = require('react-native-healthkit') 12 | let { 13 | TypeIdentifiers 14 | } = HealthKit 15 | let findKey = require('lodash/object/findKey') 16 | 17 | let StaticList = require('./StaticList') 18 | 19 | let Characteristics = React.createClass({ 20 | propTypes: {}, 21 | 22 | getInitialState () { 23 | return { 24 | biologicalSex: HealthKit.BiologicalSex.NotSet 25 | } 26 | }, 27 | 28 | componentWillMount () { 29 | HealthKit.requestAuthorizationToShareTypes({ 30 | typesToShare: [], 31 | typesToRead: [ 32 | TypeIdentifiers.Characteristic.BiologicalSex, 33 | TypeIdentifiers.Characteristic.BloogType, 34 | TypeIdentifiers.Characteristic.DateOfBirth 35 | ] 36 | }, (err, success) => { 37 | if (err) throw new Error(err) 38 | HealthKit.getBiologicalSex((err, biologicalSex) => { 39 | if (err) throw new Error(err) 40 | this.setState({ biologicalSex }) 41 | }) 42 | }) 43 | }, 44 | 45 | render () { 46 | let { biologicalSex } = this.state 47 | let biologicalSexKey = findKey( 48 | HealthKit.BiologicalSex, 49 | value => value === biologicalSex 50 | ) 51 | 52 | return ( 53 | 54 | 55 | 58 | 59 | 60 | ) 61 | } 62 | }) 63 | 64 | let styles = StyleSheet.create({ 65 | container: { 66 | flex: 1, 67 | paddingTop: 64 68 | } 69 | }) 70 | 71 | module.exports = Characteristics 72 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/src/components/Index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let React = require('react-native') 4 | let { 5 | StyleSheet 6 | } = React 7 | 8 | let StaticList = require('./StaticList') 9 | let Characteristics = require('./Characteristics') 10 | let Empty = require('./Empty') 11 | 12 | let Index = React.createClass({ 13 | render () { 14 | return ( 15 | this.selectRow(row)}> 16 | 17 | 20 | 23 | 26 | 29 | 32 | 35 | 38 | 41 | 42 | 43 | 46 | 49 | 52 | 53 | 54 | ) 55 | }, 56 | 57 | selectRow (row) { 58 | this.props.navigator.push({ 59 | title: row.label, 60 | component: row.component, 61 | passProps: { row } 62 | }) 63 | } 64 | }) 65 | 66 | let styles = StyleSheet.create({ 67 | container: { flex: 1 } 68 | }) 69 | 70 | module.exports = Index 71 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExampleTests/RCTHealthKitExampleTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | #import 12 | 13 | #import "RCTAssert.h" 14 | #import "RCTRedBox.h" 15 | #import "RCTRootView.h" 16 | 17 | #define TIMEOUT_SECONDS 240 18 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" 19 | 20 | @interface SimpleExampleTests : XCTestCase 21 | 22 | @end 23 | 24 | @implementation SimpleExampleTests 25 | 26 | 27 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 28 | { 29 | if (test(view)) { 30 | return YES; 31 | } 32 | for (UIView *subview in [view subviews]) { 33 | if ([self findSubviewInView:subview matching:test]) { 34 | return YES; 35 | } 36 | } 37 | return NO; 38 | } 39 | 40 | - (void)testRendersWelcomeScreen { 41 | UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; 42 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 43 | BOOL foundElement = NO; 44 | NSString *redboxError = nil; 45 | 46 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 47 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 48 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 49 | 50 | redboxError = [[RCTRedBox sharedInstance] currentErrorMessage]; 51 | 52 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 53 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 54 | return YES; 55 | } 56 | return NO; 57 | }]; 58 | } 59 | 60 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 61 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 62 | } 63 | 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import "AppDelegate.h" 11 | 12 | #import "RCTRootView.h" 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | NSURL *jsCodeLocation; 19 | 20 | /** 21 | * Loading JavaScript code - uncomment the one you want. 22 | * 23 | * OPTION 1 24 | * Load from development server. Start the server from the repository root: 25 | * 26 | * $ npm start 27 | * 28 | * To run on device, change `localhost` to the IP address of your computer 29 | * (you can get this by typing `ifconfig` into the terminal and selecting the 30 | * `inet` value under `en0:`) and make sure your computer and iOS device are 31 | * on the same Wi-Fi network. 32 | */ 33 | 34 | jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"]; 35 | 36 | /** 37 | * OPTION 2 38 | * Load from pre-bundled file on disk. To re-generate the static bundle 39 | * from the root of your project directory, run 40 | * 41 | * $ react-native bundle --minify 42 | * 43 | * see http://facebook.github.io/react-native/docs/runningondevice.html 44 | */ 45 | 46 | // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 47 | 48 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 49 | moduleName:@"SimpleExample" 50 | launchOptions:launchOptions]; 51 | 52 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 53 | UIViewController *rootViewController = [[UIViewController alloc] init]; 54 | rootViewController.view = rootView; 55 | self.window.rootViewController = rootViewController; 56 | [self.window makeKeyAndVisible]; 57 | return YES; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample.xcodeproj/xcshareddata/xcschemes/RCTHealthKitExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 94 | 96 | 102 | 103 | 104 | 105 | 107 | 108 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/src/components/StaticList.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | let React = require('react-native') 4 | let { 5 | Children, 6 | ListView, 7 | PixelRatio, 8 | PropTypes, 9 | StyleSheet, 10 | Text, 11 | TouchableHighlight, 12 | View, 13 | } = React 14 | let invariant = require('invariant') 15 | 16 | function reactChildrenMap (children, predicate) { 17 | let result = [] 18 | Children.forEach(children, (child, index) => { 19 | result.push(predicate(child, index)) 20 | }) 21 | return result 22 | } 23 | 24 | let StaticList = React.createClass({ 25 | propTypes: { 26 | onSelectRow: PropTypes.func 27 | }, 28 | 29 | getInitialState () { 30 | let sections = reactChildrenMap(this.props.children, (child, index) => { 31 | invariant( 32 | child.type === StaticList.Section, 33 | 'Only `StaticList.Section` elements are allowed as children of `StaticList`' 34 | ) 35 | return { 36 | id: `${index}`, 37 | label: child.props.label, 38 | items: reactChildrenMap(child.props.children, (sectionChild, sectionChildIndex) => { 39 | invariant( 40 | sectionChild.type === StaticList.Item, 41 | 'Only `StaticList.Item` elements are allowed as children of `StaticList.Section`' 42 | ) 43 | return { 44 | id: `${index}:${sectionChildIndex}`, 45 | label: sectionChild.props.label, 46 | value: sectionChild.props.value, 47 | component: sectionChild.props.component 48 | } 49 | }) 50 | } 51 | }) 52 | 53 | let sectionIds = sections.map(s => s.id) 54 | let rowIds = sections.map(s => s.items.map(r => r.id)) 55 | let dataSource = new ListView.DataSource({ 56 | rowHasChanged: (r1, r2) => r1 !== r2, 57 | sectionHeaderHasChanged: (s1, s2) => s1 !== s2, 58 | getSectionHeaderData: (sections, sectionId) => 59 | sections.find(s => s.id === sectionId), 60 | getRowData: (sections, sectionId, rowId) => 61 | sections 62 | .find(s => s.id === sectionId).items 63 | .find(r => r.id === rowId) 64 | }).cloneWithRowsAndSections(sections, sectionIds, rowIds); 65 | 66 | return { dataSource } 67 | }, 68 | 69 | render() { 70 | return ( 71 | this.renderSectionHeader(section)} 75 | renderRow={row => this.renderRow(row)} 76 | /> 77 | ) 78 | }, 79 | 80 | renderSectionHeader (section) { 81 | if (!section.label) { 82 | return 83 | } 84 | 85 | return ( 86 | 87 | 88 | {section.label} 89 | 90 | 91 | ); 92 | }, 93 | 94 | renderRow (row) { 95 | return ( 96 | 97 | this.selectRow(row)}> 100 | 101 | 102 | {row.label} 103 | 104 | 105 | {row.value} 106 | 107 | 108 | 109 | 110 | 111 | ) 112 | }, 113 | 114 | selectRow (row) { 115 | if (this.props.onSelectRow) { this.props.onSelectRow(row) } 116 | } 117 | }) 118 | 119 | StaticList.Section = React.createClass({ 120 | propTypes: { 121 | label: PropTypes.string, 122 | children: PropTypes.element 123 | }, 124 | 125 | render () { 126 | invariant(false, '`StaticList.Section` may not be rendered outside of `StaticList`') 127 | } 128 | }) 129 | 130 | StaticList.Item = React.createClass({ 131 | propTypes: { 132 | label: PropTypes.node.isRequired, 133 | value: PropTypes.node, 134 | component: PropTypes.func 135 | }, 136 | 137 | render () { 138 | invariant(false, '`StaticList.Item` may not be rendered outside of `StaticList`') 139 | } 140 | }) 141 | 142 | let styles = StyleSheet.create({ 143 | container: { 144 | flex: 1, 145 | }, 146 | sectionHeader: { 147 | paddingTop: 6, 148 | paddingBottom: 6, 149 | paddingLeft: 14, 150 | paddingRight: 14, 151 | backgroundColor: '#eee', 152 | }, 153 | sectionTitle: { 154 | fontSize: 13, 155 | fontWeight: 'bold', 156 | color: '#333', 157 | }, 158 | row: { 159 | position: 'relative', 160 | }, 161 | rowLabelContainer: { 162 | padding: 14, 163 | flexDirection: 'row' 164 | }, 165 | rowLabel: { 166 | flex: 2, 167 | fontSize: 16, 168 | color: '#333', 169 | }, 170 | rowValue: { 171 | flex: 1, 172 | fontSize: 16, 173 | color: '#333', 174 | textAlign: 'right' 175 | }, 176 | rowDivider: { 177 | position: 'absolute', 178 | left: 0, 179 | right: 0, 180 | bottom: 0, 181 | height: 1 / PixelRatio.get(), 182 | backgroundColor: '#ddd', 183 | }, 184 | }) 185 | 186 | module.exports = StaticList 187 | -------------------------------------------------------------------------------- /RCTHealthKit/RCTHealthKit.m: -------------------------------------------------------------------------------- 1 | // 2 | // RCTHealthKit.m 3 | // RCTHealthKit 4 | // 5 | // Created by Spencer Elliott on 2015-09-06. 6 | // Copyright (c) 2015 Facebook. All rights reserved. 7 | // 8 | 9 | #import "RCTHealthKit.h" 10 | 11 | @implementation RCTHealthKit 12 | 13 | + (NSDate *)parseISO8601DateFromString:(NSString *)date 14 | { 15 | NSDateFormatter *dateFormatter = [NSDateFormatter new]; 16 | NSLocale *posix = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 17 | dateFormatter.locale = posix; 18 | dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ"; 19 | return [dateFormatter dateFromString:date]; 20 | } 21 | 22 | + (NSString *)buildISO8601StringFromDate:(NSDate *)date 23 | { 24 | NSDateFormatter *dateFormatter = [NSDateFormatter new]; 25 | NSLocale *posix = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 26 | dateFormatter.locale = posix; 27 | dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ"; 28 | return [dateFormatter stringFromDate:date]; 29 | } 30 | 31 | @synthesize healthStore = _healthStore; 32 | 33 | - (HKHealthStore *)healthStore 34 | { 35 | if (!_healthStore) _healthStore = [[HKHealthStore alloc] init]; 36 | return _healthStore; 37 | } 38 | 39 | + (NSSet *)typesSetFromDictionary:(NSDictionary *)types 40 | { 41 | NSSet *typesSet = [NSSet set]; 42 | if (types[@"category"]) { 43 | for (NSString *typeIdentifier in types[@"category"]) { 44 | HKCategoryType *categoryType = [HKObjectType categoryTypeForIdentifier:typeIdentifier]; 45 | typesSet = [typesSet setByAddingObject:categoryType]; 46 | } 47 | } 48 | if (types[@"quantity"]) { 49 | for (NSString *typeIdentifier in types[@"quantity"]) { 50 | HKQuantityType *quantityType = [HKObjectType quantityTypeForIdentifier:typeIdentifier]; 51 | typesSet = [typesSet setByAddingObject:quantityType]; 52 | } 53 | } 54 | if (types[@"characteristic"]) { 55 | for (NSString *typeIdentifier in types[@"characteristic"]) { 56 | HKCharacteristicType *characteristicType = [HKObjectType characteristicTypeForIdentifier:typeIdentifier]; 57 | typesSet = [typesSet setByAddingObject:characteristicType]; 58 | } 59 | } 60 | if (types[@"correlation"]) { 61 | for (NSString *typeIdentifier in types[@"correlation"]) { 62 | HKCorrelationType *correlationType = [HKObjectType correlationTypeForIdentifier:typeIdentifier]; 63 | typesSet = [typesSet setByAddingObject:correlationType]; 64 | } 65 | } 66 | if (types[@"workout"]) { 67 | HKWorkoutType *workoutType = [HKObjectType workoutType]; 68 | typesSet = [typesSet setByAddingObject:workoutType]; 69 | } 70 | return typesSet; 71 | } 72 | 73 | RCT_EXPORT_MODULE(); 74 | 75 | - (NSDictionary *)constantsToExport 76 | { 77 | return @{ 78 | @"BiologicalSex": @{ 79 | @"NotSet": [NSNumber numberWithInteger:HKBiologicalSexNotSet], 80 | @"Female": [NSNumber numberWithInteger:HKBiologicalSexFemale], 81 | @"Male": [NSNumber numberWithInteger:HKBiologicalSexMale], 82 | @"Other": [NSNumber numberWithInteger:HKBiologicalSexOther] 83 | }, 84 | @"SleepAnalysis": @{ 85 | @"InBed": [NSNumber numberWithInteger:HKCategoryValueSleepAnalysisInBed], 86 | @"Asleep": [NSNumber numberWithInteger:HKCategoryValueSleepAnalysisAsleep] 87 | } 88 | }; 89 | } 90 | 91 | RCT_EXPORT_METHOD(isHealthDataAvailable:(RCTResponseSenderBlock)callback) 92 | { 93 | BOOL isHealthDataAvailable = [HKHealthStore isHealthDataAvailable]; 94 | callback(@[[NSNull null], [NSNumber numberWithBool:isHealthDataAvailable]]); 95 | } 96 | 97 | RCT_EXPORT_METHOD(requestAuthorizationToShareTypes:(NSDictionary *)typesToShare 98 | readTypes:(NSDictionary *)typesToRead 99 | callback:(RCTResponseSenderBlock)callback) 100 | { 101 | NSSet *typesToShareSet = [RCTHealthKit typesSetFromDictionary:typesToShare]; 102 | NSSet *typesToReadSet = [RCTHealthKit typesSetFromDictionary:typesToRead]; 103 | [self.healthStore requestAuthorizationToShareTypes:typesToShareSet readTypes:typesToReadSet completion:^(BOOL success, NSError *error) { 104 | if (!success) { 105 | callback(@[@"Failed to authorize HealthKit", [NSNumber numberWithBool:success]]); 106 | return; 107 | } 108 | 109 | callback(@[[NSNull null], [NSNumber numberWithBool:success]]); 110 | }]; 111 | } 112 | 113 | RCT_EXPORT_METHOD(getBiologicalSex:(RCTResponseSenderBlock)callback) 114 | { 115 | NSError *error; 116 | HKBiologicalSexObject *bso = [self.healthStore biologicalSexWithError:&error]; 117 | callback(@[error ? error.description : [NSNull null], [NSNumber numberWithInteger:bso.biologicalSex]]); 118 | } 119 | 120 | RCT_EXPORT_METHOD(queryCategorySample:(NSString *)typeIdentifier 121 | startDate:(NSString *)startDateString // e.g. @"2014-02-07T03:10:59:434Z" 122 | endDate:(NSString *)endDateString 123 | callback:(RCTResponseSenderBlock)callback) 124 | { 125 | // Parse dates 126 | NSDate *startDate = [RCTHealthKit parseISO8601DateFromString:startDateString]; 127 | NSDate *endDate = [RCTHealthKit parseISO8601DateFromString:endDateString]; 128 | 129 | // Build the query 130 | HKSampleType *sampleType = [HKSampleType categoryTypeForIdentifier:typeIdentifier]; 131 | NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionNone]; 132 | HKSampleQuery *query = [[HKSampleQuery alloc] 133 | initWithSampleType:sampleType 134 | predicate:predicate 135 | limit:HKObjectQueryNoLimit 136 | sortDescriptors:nil 137 | resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) { 138 | NSMutableArray *plainResults = [NSMutableArray new]; 139 | for (HKCategorySample *sample in results) { 140 | // Convert samples to plain NSDictionary / NSString / NSNumber 141 | [plainResults addObject:@{ 142 | @"startDate": [RCTHealthKit buildISO8601StringFromDate:sample.startDate], 143 | @"endDate": [RCTHealthKit buildISO8601StringFromDate:sample.endDate], 144 | @"sampleType": sample.sampleType.identifier, 145 | @"categoryType": sample.categoryType.identifier, 146 | @"value": [NSNumber numberWithLong:sample.value] 147 | }]; 148 | } 149 | callback(@[error ? error.description : [NSNull null], plainResults]); 150 | }]; 151 | 152 | // Execute the query 153 | [self.healthStore executeQuery:query]; 154 | } 155 | 156 | RCT_EXPORT_METHOD(queryStatistics:(NSString *)typeIdentifier 157 | startDate:(NSString *)startDateString 158 | endDate:(NSString *)endDateString 159 | unit:(NSString *)unitString 160 | callback:(RCTResponseSenderBlock)callback) 161 | { 162 | // Parse dates 163 | NSDate *startDate = [RCTHealthKit parseISO8601DateFromString:startDateString]; 164 | NSDate *endDate = [RCTHealthKit parseISO8601DateFromString:endDateString]; 165 | 166 | // Build query 167 | HKQuantityType *sampleType = [HKQuantityType quantityTypeForIdentifier:typeIdentifier]; 168 | NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate]; 169 | HKStatisticsQuery *query = [[HKStatisticsQuery alloc] 170 | initWithQuantityType:sampleType 171 | quantitySamplePredicate:predicate 172 | options:HKStatisticsOptionCumulativeSum 173 | completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) { 174 | if (!result) { 175 | return; 176 | } 177 | 178 | double totalNutrients = [result.sumQuantity doubleValueForUnit:[HKUnit unitFromString:unitString]]; 179 | NSNumber *nsTotalNutrients = [NSNumber numberWithDouble:totalNutrients]; 180 | 181 | NSMutableArray *plainResults = [NSMutableArray new]; 182 | [plainResults addObject:@{ 183 | @"startDate": [RCTHealthKit buildISO8601StringFromDate:result.startDate], 184 | @"endDate": [RCTHealthKit buildISO8601StringFromDate:result.endDate], 185 | @"quantityType": result.quantityType.identifier, 186 | @"value": nsTotalNutrients 187 | }]; 188 | 189 | callback(@[error ? error.description : [NSNull null], plainResults]); 190 | }]; 191 | 192 | // Execute the query 193 | [self.healthStore executeQuery:query]; 194 | 195 | } 196 | 197 | 198 | @end 199 | -------------------------------------------------------------------------------- /RCTHealthKit.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 092DC1891B9C923E0090E1AC /* RCTHealthKit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 092DC1881B9C923E0090E1AC /* RCTHealthKit.h */; }; 11 | 092DC18B1B9C923E0090E1AC /* RCTHealthKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 092DC18A1B9C923E0090E1AC /* RCTHealthKit.m */; }; 12 | 092DC1911B9C923E0090E1AC /* libRCTHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 092DC1851B9C923E0090E1AC /* libRCTHealthKit.a */; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXContainerItemProxy section */ 16 | 092DC1921B9C923E0090E1AC /* PBXContainerItemProxy */ = { 17 | isa = PBXContainerItemProxy; 18 | containerPortal = 092DC17D1B9C923E0090E1AC /* Project object */; 19 | proxyType = 1; 20 | remoteGlobalIDString = 092DC1841B9C923E0090E1AC; 21 | remoteInfo = RCTHealthKit; 22 | }; 23 | /* End PBXContainerItemProxy section */ 24 | 25 | /* Begin PBXCopyFilesBuildPhase section */ 26 | 092DC1831B9C923E0090E1AC /* CopyFiles */ = { 27 | isa = PBXCopyFilesBuildPhase; 28 | buildActionMask = 2147483647; 29 | dstPath = "include/$(PRODUCT_NAME)"; 30 | dstSubfolderSpec = 16; 31 | files = ( 32 | 092DC1891B9C923E0090E1AC /* RCTHealthKit.h in CopyFiles */, 33 | ); 34 | runOnlyForDeploymentPostprocessing = 0; 35 | }; 36 | /* End PBXCopyFilesBuildPhase section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 092DC1851B9C923E0090E1AC /* libRCTHealthKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTHealthKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 092DC1881B9C923E0090E1AC /* RCTHealthKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTHealthKit.h; sourceTree = ""; }; 41 | 092DC18A1B9C923E0090E1AC /* RCTHealthKit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTHealthKit.m; sourceTree = ""; }; 42 | 092DC1901B9C923E0090E1AC /* RCTHealthKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RCTHealthKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | 092DC1961B9C923E0090E1AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 44 | /* End PBXFileReference section */ 45 | 46 | /* Begin PBXFrameworksBuildPhase section */ 47 | 092DC1821B9C923E0090E1AC /* Frameworks */ = { 48 | isa = PBXFrameworksBuildPhase; 49 | buildActionMask = 2147483647; 50 | files = ( 51 | ); 52 | runOnlyForDeploymentPostprocessing = 0; 53 | }; 54 | 092DC18D1B9C923E0090E1AC /* Frameworks */ = { 55 | isa = PBXFrameworksBuildPhase; 56 | buildActionMask = 2147483647; 57 | files = ( 58 | 092DC1911B9C923E0090E1AC /* libRCTHealthKit.a in Frameworks */, 59 | ); 60 | runOnlyForDeploymentPostprocessing = 0; 61 | }; 62 | /* End PBXFrameworksBuildPhase section */ 63 | 64 | /* Begin PBXGroup section */ 65 | 092DC17C1B9C923E0090E1AC = { 66 | isa = PBXGroup; 67 | children = ( 68 | 092DC1871B9C923E0090E1AC /* RCTHealthKit */, 69 | 092DC1941B9C923E0090E1AC /* RCTHealthKitTests */, 70 | 092DC1861B9C923E0090E1AC /* Products */, 71 | ); 72 | sourceTree = ""; 73 | }; 74 | 092DC1861B9C923E0090E1AC /* Products */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 092DC1851B9C923E0090E1AC /* libRCTHealthKit.a */, 78 | 092DC1901B9C923E0090E1AC /* RCTHealthKitTests.xctest */, 79 | ); 80 | name = Products; 81 | sourceTree = ""; 82 | }; 83 | 092DC1871B9C923E0090E1AC /* RCTHealthKit */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | 092DC1881B9C923E0090E1AC /* RCTHealthKit.h */, 87 | 092DC18A1B9C923E0090E1AC /* RCTHealthKit.m */, 88 | ); 89 | path = RCTHealthKit; 90 | sourceTree = ""; 91 | }; 92 | 092DC1941B9C923E0090E1AC /* RCTHealthKitTests */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | 092DC1951B9C923E0090E1AC /* Supporting Files */, 96 | ); 97 | path = RCTHealthKitTests; 98 | sourceTree = ""; 99 | }; 100 | 092DC1951B9C923E0090E1AC /* Supporting Files */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 092DC1961B9C923E0090E1AC /* Info.plist */, 104 | ); 105 | name = "Supporting Files"; 106 | sourceTree = ""; 107 | }; 108 | /* End PBXGroup section */ 109 | 110 | /* Begin PBXNativeTarget section */ 111 | 092DC1841B9C923E0090E1AC /* RCTHealthKit */ = { 112 | isa = PBXNativeTarget; 113 | buildConfigurationList = 092DC1991B9C923E0090E1AC /* Build configuration list for PBXNativeTarget "RCTHealthKit" */; 114 | buildPhases = ( 115 | 092DC1811B9C923E0090E1AC /* Sources */, 116 | 092DC1821B9C923E0090E1AC /* Frameworks */, 117 | 092DC1831B9C923E0090E1AC /* CopyFiles */, 118 | ); 119 | buildRules = ( 120 | ); 121 | dependencies = ( 122 | ); 123 | name = RCTHealthKit; 124 | productName = RCTHealthKit; 125 | productReference = 092DC1851B9C923E0090E1AC /* libRCTHealthKit.a */; 126 | productType = "com.apple.product-type.library.static"; 127 | }; 128 | 092DC18F1B9C923E0090E1AC /* RCTHealthKitTests */ = { 129 | isa = PBXNativeTarget; 130 | buildConfigurationList = 092DC19C1B9C923E0090E1AC /* Build configuration list for PBXNativeTarget "RCTHealthKitTests" */; 131 | buildPhases = ( 132 | 092DC18C1B9C923E0090E1AC /* Sources */, 133 | 092DC18D1B9C923E0090E1AC /* Frameworks */, 134 | 092DC18E1B9C923E0090E1AC /* Resources */, 135 | ); 136 | buildRules = ( 137 | ); 138 | dependencies = ( 139 | 092DC1931B9C923E0090E1AC /* PBXTargetDependency */, 140 | ); 141 | name = RCTHealthKitTests; 142 | productName = RCTHealthKitTests; 143 | productReference = 092DC1901B9C923E0090E1AC /* RCTHealthKitTests.xctest */; 144 | productType = "com.apple.product-type.bundle.unit-test"; 145 | }; 146 | /* End PBXNativeTarget section */ 147 | 148 | /* Begin PBXProject section */ 149 | 092DC17D1B9C923E0090E1AC /* Project object */ = { 150 | isa = PBXProject; 151 | attributes = { 152 | LastUpgradeCheck = 0640; 153 | ORGANIZATIONNAME = "Spencer Elliott"; 154 | TargetAttributes = { 155 | 092DC1841B9C923E0090E1AC = { 156 | CreatedOnToolsVersion = 6.4; 157 | }; 158 | 092DC18F1B9C923E0090E1AC = { 159 | CreatedOnToolsVersion = 6.4; 160 | }; 161 | }; 162 | }; 163 | buildConfigurationList = 092DC1801B9C923E0090E1AC /* Build configuration list for PBXProject "RCTHealthKit" */; 164 | compatibilityVersion = "Xcode 3.2"; 165 | developmentRegion = English; 166 | hasScannedForEncodings = 0; 167 | knownRegions = ( 168 | en, 169 | ); 170 | mainGroup = 092DC17C1B9C923E0090E1AC; 171 | productRefGroup = 092DC1861B9C923E0090E1AC /* Products */; 172 | projectDirPath = ""; 173 | projectRoot = ""; 174 | targets = ( 175 | 092DC1841B9C923E0090E1AC /* RCTHealthKit */, 176 | 092DC18F1B9C923E0090E1AC /* RCTHealthKitTests */, 177 | ); 178 | }; 179 | /* End PBXProject section */ 180 | 181 | /* Begin PBXResourcesBuildPhase section */ 182 | 092DC18E1B9C923E0090E1AC /* Resources */ = { 183 | isa = PBXResourcesBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | ); 187 | runOnlyForDeploymentPostprocessing = 0; 188 | }; 189 | /* End PBXResourcesBuildPhase section */ 190 | 191 | /* Begin PBXSourcesBuildPhase section */ 192 | 092DC1811B9C923E0090E1AC /* Sources */ = { 193 | isa = PBXSourcesBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | 092DC18B1B9C923E0090E1AC /* RCTHealthKit.m in Sources */, 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | }; 200 | 092DC18C1B9C923E0090E1AC /* Sources */ = { 201 | isa = PBXSourcesBuildPhase; 202 | buildActionMask = 2147483647; 203 | files = ( 204 | ); 205 | runOnlyForDeploymentPostprocessing = 0; 206 | }; 207 | /* End PBXSourcesBuildPhase section */ 208 | 209 | /* Begin PBXTargetDependency section */ 210 | 092DC1931B9C923E0090E1AC /* PBXTargetDependency */ = { 211 | isa = PBXTargetDependency; 212 | target = 092DC1841B9C923E0090E1AC /* RCTHealthKit */; 213 | targetProxy = 092DC1921B9C923E0090E1AC /* PBXContainerItemProxy */; 214 | }; 215 | /* End PBXTargetDependency section */ 216 | 217 | /* Begin XCBuildConfiguration section */ 218 | 092DC1971B9C923E0090E1AC /* Debug */ = { 219 | isa = XCBuildConfiguration; 220 | buildSettings = { 221 | ALWAYS_SEARCH_USER_PATHS = NO; 222 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 223 | CLANG_CXX_LIBRARY = "libc++"; 224 | CLANG_ENABLE_MODULES = YES; 225 | CLANG_ENABLE_OBJC_ARC = YES; 226 | CLANG_WARN_BOOL_CONVERSION = YES; 227 | CLANG_WARN_CONSTANT_CONVERSION = YES; 228 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 229 | CLANG_WARN_EMPTY_BODY = YES; 230 | CLANG_WARN_ENUM_CONVERSION = YES; 231 | CLANG_WARN_INT_CONVERSION = YES; 232 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 233 | CLANG_WARN_UNREACHABLE_CODE = YES; 234 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 235 | COPY_PHASE_STRIP = NO; 236 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 237 | ENABLE_STRICT_OBJC_MSGSEND = YES; 238 | GCC_C_LANGUAGE_STANDARD = gnu99; 239 | GCC_DYNAMIC_NO_PIC = NO; 240 | GCC_NO_COMMON_BLOCKS = YES; 241 | GCC_OPTIMIZATION_LEVEL = 0; 242 | GCC_PREPROCESSOR_DEFINITIONS = ( 243 | "DEBUG=1", 244 | "$(inherited)", 245 | ); 246 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 247 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 248 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 249 | GCC_WARN_UNDECLARED_SELECTOR = YES; 250 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 251 | GCC_WARN_UNUSED_FUNCTION = YES; 252 | GCC_WARN_UNUSED_VARIABLE = YES; 253 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 254 | MTL_ENABLE_DEBUG_INFO = YES; 255 | ONLY_ACTIVE_ARCH = YES; 256 | SDKROOT = iphoneos; 257 | }; 258 | name = Debug; 259 | }; 260 | 092DC1981B9C923E0090E1AC /* Release */ = { 261 | isa = XCBuildConfiguration; 262 | buildSettings = { 263 | ALWAYS_SEARCH_USER_PATHS = NO; 264 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 265 | CLANG_CXX_LIBRARY = "libc++"; 266 | CLANG_ENABLE_MODULES = YES; 267 | CLANG_ENABLE_OBJC_ARC = YES; 268 | CLANG_WARN_BOOL_CONVERSION = YES; 269 | CLANG_WARN_CONSTANT_CONVERSION = YES; 270 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 271 | CLANG_WARN_EMPTY_BODY = YES; 272 | CLANG_WARN_ENUM_CONVERSION = YES; 273 | CLANG_WARN_INT_CONVERSION = YES; 274 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 275 | CLANG_WARN_UNREACHABLE_CODE = YES; 276 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 277 | COPY_PHASE_STRIP = NO; 278 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 279 | ENABLE_NS_ASSERTIONS = NO; 280 | ENABLE_STRICT_OBJC_MSGSEND = YES; 281 | GCC_C_LANGUAGE_STANDARD = gnu99; 282 | GCC_NO_COMMON_BLOCKS = YES; 283 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 284 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 285 | GCC_WARN_UNDECLARED_SELECTOR = YES; 286 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 287 | GCC_WARN_UNUSED_FUNCTION = YES; 288 | GCC_WARN_UNUSED_VARIABLE = YES; 289 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 290 | MTL_ENABLE_DEBUG_INFO = NO; 291 | SDKROOT = iphoneos; 292 | VALIDATE_PRODUCT = YES; 293 | }; 294 | name = Release; 295 | }; 296 | 092DC19A1B9C923E0090E1AC /* Debug */ = { 297 | isa = XCBuildConfiguration; 298 | buildSettings = { 299 | HEADER_SEARCH_PATHS = ( 300 | "$(inherited)", 301 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 302 | "$(SRCROOT)/node_modules/react-native/React/**", 303 | "$(SRCROOT)/../react-native/React/**", 304 | ); 305 | OTHER_LDFLAGS = "-ObjC"; 306 | PRODUCT_NAME = "$(TARGET_NAME)"; 307 | SKIP_INSTALL = YES; 308 | }; 309 | name = Debug; 310 | }; 311 | 092DC19B1B9C923E0090E1AC /* Release */ = { 312 | isa = XCBuildConfiguration; 313 | buildSettings = { 314 | HEADER_SEARCH_PATHS = ( 315 | "$(inherited)", 316 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 317 | "$(SRCROOT)/node_modules/react-native/React/**", 318 | "$(SRCROOT)/../react-native/React/**", 319 | ); 320 | OTHER_LDFLAGS = "-ObjC"; 321 | PRODUCT_NAME = "$(TARGET_NAME)"; 322 | SKIP_INSTALL = YES; 323 | }; 324 | name = Release; 325 | }; 326 | 092DC19D1B9C923E0090E1AC /* Debug */ = { 327 | isa = XCBuildConfiguration; 328 | buildSettings = { 329 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 330 | FRAMEWORK_SEARCH_PATHS = ( 331 | "$(SDKROOT)/Developer/Library/Frameworks", 332 | "$(inherited)", 333 | ); 334 | GCC_PREPROCESSOR_DEFINITIONS = ( 335 | "DEBUG=1", 336 | "$(inherited)", 337 | ); 338 | INFOPLIST_FILE = RCTHealthKitTests/Info.plist; 339 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 340 | PRODUCT_NAME = "$(TARGET_NAME)"; 341 | }; 342 | name = Debug; 343 | }; 344 | 092DC19E1B9C923E0090E1AC /* Release */ = { 345 | isa = XCBuildConfiguration; 346 | buildSettings = { 347 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 348 | FRAMEWORK_SEARCH_PATHS = ( 349 | "$(SDKROOT)/Developer/Library/Frameworks", 350 | "$(inherited)", 351 | ); 352 | INFOPLIST_FILE = RCTHealthKitTests/Info.plist; 353 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 354 | PRODUCT_NAME = "$(TARGET_NAME)"; 355 | }; 356 | name = Release; 357 | }; 358 | /* End XCBuildConfiguration section */ 359 | 360 | /* Begin XCConfigurationList section */ 361 | 092DC1801B9C923E0090E1AC /* Build configuration list for PBXProject "RCTHealthKit" */ = { 362 | isa = XCConfigurationList; 363 | buildConfigurations = ( 364 | 092DC1971B9C923E0090E1AC /* Debug */, 365 | 092DC1981B9C923E0090E1AC /* Release */, 366 | ); 367 | defaultConfigurationIsVisible = 0; 368 | defaultConfigurationName = Release; 369 | }; 370 | 092DC1991B9C923E0090E1AC /* Build configuration list for PBXNativeTarget "RCTHealthKit" */ = { 371 | isa = XCConfigurationList; 372 | buildConfigurations = ( 373 | 092DC19A1B9C923E0090E1AC /* Debug */, 374 | 092DC19B1B9C923E0090E1AC /* Release */, 375 | ); 376 | defaultConfigurationIsVisible = 0; 377 | }; 378 | 092DC19C1B9C923E0090E1AC /* Build configuration list for PBXNativeTarget "RCTHealthKitTests" */ = { 379 | isa = XCConfigurationList; 380 | buildConfigurations = ( 381 | 092DC19D1B9C923E0090E1AC /* Debug */, 382 | 092DC19E1B9C923E0090E1AC /* Release */, 383 | ); 384 | defaultConfigurationIsVisible = 0; 385 | }; 386 | /* End XCConfigurationList section */ 387 | }; 388 | rootObject = 092DC17D1B9C923E0090E1AC /* Project object */; 389 | } 390 | -------------------------------------------------------------------------------- /examples/RCTHealthKitExample/iOS/RCTHealthKitExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 008F07F21AC5B25A0029DE68 /* main.jsbundle */; }; 11 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 12 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; 13 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; 14 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 15 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; 16 | 09384F241B9D259F0095EDC7 /* libRCTHealthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 09384F201B9D20380095EDC7 /* libRCTHealthKit.a */; }; 17 | 09384F551B9D590B0095EDC7 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09384F541B9D590B0095EDC7 /* HealthKit.framework */; }; 18 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 19 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 20 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; 21 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 22 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 23 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 24 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 25 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 26 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 27 | /* End PBXBuildFile section */ 28 | 29 | /* Begin PBXContainerItemProxy section */ 30 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { 31 | isa = PBXContainerItemProxy; 32 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 33 | proxyType = 2; 34 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 35 | remoteInfo = RCTActionSheet; 36 | }; 37 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { 38 | isa = PBXContainerItemProxy; 39 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 40 | proxyType = 2; 41 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 42 | remoteInfo = RCTGeolocation; 43 | }; 44 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { 45 | isa = PBXContainerItemProxy; 46 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 47 | proxyType = 2; 48 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676; 49 | remoteInfo = RCTImage; 50 | }; 51 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { 52 | isa = PBXContainerItemProxy; 53 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 54 | proxyType = 2; 55 | remoteGlobalIDString = 58B511DB1A9E6C8500147676; 56 | remoteInfo = RCTNetwork; 57 | }; 58 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { 59 | isa = PBXContainerItemProxy; 60 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 61 | proxyType = 2; 62 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; 63 | remoteInfo = RCTVibration; 64 | }; 65 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 66 | isa = PBXContainerItemProxy; 67 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 68 | proxyType = 1; 69 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 70 | remoteInfo = SimpleExample; 71 | }; 72 | 09384F1F1B9D20380095EDC7 /* PBXContainerItemProxy */ = { 73 | isa = PBXContainerItemProxy; 74 | containerPortal = 09384F1A1B9D20380095EDC7 /* RCTHealthKit.xcodeproj */; 75 | proxyType = 2; 76 | remoteGlobalIDString = 092DC1851B9C923E0090E1AC; 77 | remoteInfo = RCTHealthKit; 78 | }; 79 | 09384F211B9D20380095EDC7 /* PBXContainerItemProxy */ = { 80 | isa = PBXContainerItemProxy; 81 | containerPortal = 09384F1A1B9D20380095EDC7 /* RCTHealthKit.xcodeproj */; 82 | proxyType = 2; 83 | remoteGlobalIDString = 092DC1901B9C923E0090E1AC; 84 | remoteInfo = RCTHealthKitTests; 85 | }; 86 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { 87 | isa = PBXContainerItemProxy; 88 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 89 | proxyType = 2; 90 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 91 | remoteInfo = RCTSettings; 92 | }; 93 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { 94 | isa = PBXContainerItemProxy; 95 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 96 | proxyType = 2; 97 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A; 98 | remoteInfo = RCTWebSocket; 99 | }; 100 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { 101 | isa = PBXContainerItemProxy; 102 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 103 | proxyType = 2; 104 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; 105 | remoteInfo = React; 106 | }; 107 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { 108 | isa = PBXContainerItemProxy; 109 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 110 | proxyType = 2; 111 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 112 | remoteInfo = RCTLinking; 113 | }; 114 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { 115 | isa = PBXContainerItemProxy; 116 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 117 | proxyType = 2; 118 | remoteGlobalIDString = 58B5119B1A9E6C1200147676; 119 | remoteInfo = RCTText; 120 | }; 121 | /* End PBXContainerItemProxy section */ 122 | 123 | /* Begin PBXFileReference section */ 124 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 125 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; 126 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; 127 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; 128 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 129 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 130 | 00E356EE1AD99517003FC87E /* RCTHealthKitExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RCTHealthKitExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 131 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 132 | 09384F1A1B9D20380095EDC7 /* RCTHealthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTHealthKit.xcodeproj; path = "../node_modules/react-native-healthkit/RCTHealthKit.xcodeproj"; sourceTree = ""; }; 133 | 09384F531B9D590B0095EDC7 /* RCTHealthKitExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = RCTHealthKitExample.entitlements; sourceTree = ""; }; 134 | 09384F541B9D590B0095EDC7 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; }; 135 | 09384F9F1B9D5D540095EDC7 /* RCTHealthKitExampleTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RCTHealthKitExampleTests.m; path = RCTHealthKitExampleTests/RCTHealthKitExampleTests.m; sourceTree = SOURCE_ROOT; }; 136 | 0948FA651B9FA6E70061A325 /* RCTHealthKitExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = RCTHealthKitExample.entitlements; sourceTree = ""; }; 137 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 138 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 139 | 13B07F961A680F5B00A75B9A /* RCTHealthKitExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RCTHealthKitExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 140 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 141 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 142 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 143 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 144 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 145 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 146 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 147 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 148 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 149 | /* End PBXFileReference section */ 150 | 151 | /* Begin PBXFrameworksBuildPhase section */ 152 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 153 | isa = PBXFrameworksBuildPhase; 154 | buildActionMask = 2147483647; 155 | files = ( 156 | ); 157 | runOnlyForDeploymentPostprocessing = 0; 158 | }; 159 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 160 | isa = PBXFrameworksBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | 09384F241B9D259F0095EDC7 /* libRCTHealthKit.a in Frameworks */, 164 | 146834051AC3E58100842450 /* libReact.a in Frameworks */, 165 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 166 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 167 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 168 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, 169 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 170 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 171 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 172 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 173 | 09384F551B9D590B0095EDC7 /* HealthKit.framework in Frameworks */, 174 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 175 | ); 176 | runOnlyForDeploymentPostprocessing = 0; 177 | }; 178 | /* End PBXFrameworksBuildPhase section */ 179 | 180 | /* Begin PBXGroup section */ 181 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, 185 | ); 186 | name = Products; 187 | sourceTree = ""; 188 | }; 189 | 00C302B61ABCB90400DB3ED1 /* Products */ = { 190 | isa = PBXGroup; 191 | children = ( 192 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, 193 | ); 194 | name = Products; 195 | sourceTree = ""; 196 | }; 197 | 00C302BC1ABCB91800DB3ED1 /* Products */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, 201 | ); 202 | name = Products; 203 | sourceTree = ""; 204 | }; 205 | 00C302D41ABCB9D200DB3ED1 /* Products */ = { 206 | isa = PBXGroup; 207 | children = ( 208 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, 209 | ); 210 | name = Products; 211 | sourceTree = ""; 212 | }; 213 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = { 214 | isa = PBXGroup; 215 | children = ( 216 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, 217 | ); 218 | name = Products; 219 | sourceTree = ""; 220 | }; 221 | 00E356EF1AD99517003FC87E /* RCTHealthKitExampleTests */ = { 222 | isa = PBXGroup; 223 | children = ( 224 | 09384F9F1B9D5D540095EDC7 /* RCTHealthKitExampleTests.m */, 225 | 00E356F01AD99517003FC87E /* Supporting Files */, 226 | ); 227 | path = RCTHealthKitExampleTests; 228 | sourceTree = ""; 229 | }; 230 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | 00E356F11AD99517003FC87E /* Info.plist */, 234 | ); 235 | name = "Supporting Files"; 236 | sourceTree = ""; 237 | }; 238 | 09384F1B1B9D20380095EDC7 /* Products */ = { 239 | isa = PBXGroup; 240 | children = ( 241 | 09384F201B9D20380095EDC7 /* libRCTHealthKit.a */, 242 | 09384F221B9D20380095EDC7 /* RCTHealthKitTests.xctest */, 243 | ); 244 | name = Products; 245 | sourceTree = ""; 246 | }; 247 | 139105B71AF99BAD00B5F7CC /* Products */ = { 248 | isa = PBXGroup; 249 | children = ( 250 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, 251 | ); 252 | name = Products; 253 | sourceTree = ""; 254 | }; 255 | 139FDEE71B06529A00C62182 /* Products */ = { 256 | isa = PBXGroup; 257 | children = ( 258 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 259 | ); 260 | name = Products; 261 | sourceTree = ""; 262 | }; 263 | 13B07FAE1A68108700A75B9A /* RCTHealthKitExample */ = { 264 | isa = PBXGroup; 265 | children = ( 266 | 0948FA651B9FA6E70061A325 /* RCTHealthKitExample.entitlements */, 267 | 09384F531B9D590B0095EDC7 /* RCTHealthKitExample.entitlements */, 268 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 269 | 13B07FB01A68108700A75B9A /* AppDelegate.m */, 270 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 271 | 13B07FB61A68108700A75B9A /* Info.plist */, 272 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 273 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 274 | 13B07FB71A68108700A75B9A /* main.m */, 275 | ); 276 | path = RCTHealthKitExample; 277 | sourceTree = ""; 278 | }; 279 | 146834001AC3E56700842450 /* Products */ = { 280 | isa = PBXGroup; 281 | children = ( 282 | 146834041AC3E56700842450 /* libReact.a */, 283 | ); 284 | name = Products; 285 | sourceTree = ""; 286 | }; 287 | 78C398B11ACF4ADC00677621 /* Products */ = { 288 | isa = PBXGroup; 289 | children = ( 290 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, 291 | ); 292 | name = Products; 293 | sourceTree = ""; 294 | }; 295 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 296 | isa = PBXGroup; 297 | children = ( 298 | 146833FF1AC3E56700842450 /* React.xcodeproj */, 299 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 300 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, 301 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, 302 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, 303 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, 304 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, 305 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 306 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 307 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 308 | 09384F1A1B9D20380095EDC7 /* RCTHealthKit.xcodeproj */, 309 | ); 310 | name = Libraries; 311 | sourceTree = ""; 312 | }; 313 | 832341B11AAA6A8300B99B32 /* Products */ = { 314 | isa = PBXGroup; 315 | children = ( 316 | 832341B51AAA6A8300B99B32 /* libRCTText.a */, 317 | ); 318 | name = Products; 319 | sourceTree = ""; 320 | }; 321 | 83CBB9F61A601CBA00E9B192 = { 322 | isa = PBXGroup; 323 | children = ( 324 | 09384F541B9D590B0095EDC7 /* HealthKit.framework */, 325 | 13B07FAE1A68108700A75B9A /* RCTHealthKitExample */, 326 | 00E356EF1AD99517003FC87E /* RCTHealthKitExampleTests */, 327 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 328 | 83CBBA001A601CBA00E9B192 /* Products */, 329 | ); 330 | indentWidth = 2; 331 | sourceTree = ""; 332 | tabWidth = 2; 333 | }; 334 | 83CBBA001A601CBA00E9B192 /* Products */ = { 335 | isa = PBXGroup; 336 | children = ( 337 | 13B07F961A680F5B00A75B9A /* RCTHealthKitExample.app */, 338 | 00E356EE1AD99517003FC87E /* RCTHealthKitExampleTests.xctest */, 339 | ); 340 | name = Products; 341 | sourceTree = ""; 342 | }; 343 | /* End PBXGroup section */ 344 | 345 | /* Begin PBXNativeTarget section */ 346 | 00E356ED1AD99517003FC87E /* RCTHealthKitExampleTests */ = { 347 | isa = PBXNativeTarget; 348 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "RCTHealthKitExampleTests" */; 349 | buildPhases = ( 350 | 00E356EA1AD99517003FC87E /* Sources */, 351 | 00E356EB1AD99517003FC87E /* Frameworks */, 352 | 00E356EC1AD99517003FC87E /* Resources */, 353 | ); 354 | buildRules = ( 355 | ); 356 | dependencies = ( 357 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 358 | ); 359 | name = RCTHealthKitExampleTests; 360 | productName = RCTHealthKitExampleTests; 361 | productReference = 00E356EE1AD99517003FC87E /* RCTHealthKitExampleTests.xctest */; 362 | productType = "com.apple.product-type.bundle.unit-test"; 363 | }; 364 | 13B07F861A680F5B00A75B9A /* RCTHealthKitExample */ = { 365 | isa = PBXNativeTarget; 366 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RCTHealthKitExample" */; 367 | buildPhases = ( 368 | 13B07F871A680F5B00A75B9A /* Sources */, 369 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 370 | 13B07F8E1A680F5B00A75B9A /* Resources */, 371 | ); 372 | buildRules = ( 373 | ); 374 | dependencies = ( 375 | ); 376 | name = RCTHealthKitExample; 377 | productName = "Hello World"; 378 | productReference = 13B07F961A680F5B00A75B9A /* RCTHealthKitExample.app */; 379 | productType = "com.apple.product-type.application"; 380 | }; 381 | /* End PBXNativeTarget section */ 382 | 383 | /* Begin PBXProject section */ 384 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 385 | isa = PBXProject; 386 | attributes = { 387 | LastUpgradeCheck = 0610; 388 | ORGANIZATIONNAME = Facebook; 389 | TargetAttributes = { 390 | 00E356ED1AD99517003FC87E = { 391 | CreatedOnToolsVersion = 6.2; 392 | TestTargetID = 13B07F861A680F5B00A75B9A; 393 | }; 394 | 13B07F861A680F5B00A75B9A = { 395 | DevelopmentTeam = 6K333YNZ5H; 396 | SystemCapabilities = { 397 | com.apple.HealthKit = { 398 | enabled = 1; 399 | }; 400 | }; 401 | }; 402 | }; 403 | }; 404 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RCTHealthKitExample" */; 405 | compatibilityVersion = "Xcode 3.2"; 406 | developmentRegion = English; 407 | hasScannedForEncodings = 0; 408 | knownRegions = ( 409 | en, 410 | Base, 411 | ); 412 | mainGroup = 83CBB9F61A601CBA00E9B192; 413 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 414 | projectDirPath = ""; 415 | projectReferences = ( 416 | { 417 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; 418 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 419 | }, 420 | { 421 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; 422 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 423 | }, 424 | { 425 | ProductGroup = 09384F1B1B9D20380095EDC7 /* Products */; 426 | ProjectRef = 09384F1A1B9D20380095EDC7 /* RCTHealthKit.xcodeproj */; 427 | }, 428 | { 429 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; 430 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 431 | }, 432 | { 433 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; 434 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 435 | }, 436 | { 437 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; 438 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 439 | }, 440 | { 441 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; 442 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 443 | }, 444 | { 445 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; 446 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 447 | }, 448 | { 449 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; 450 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 451 | }, 452 | { 453 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */; 454 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 455 | }, 456 | { 457 | ProductGroup = 146834001AC3E56700842450 /* Products */; 458 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; 459 | }, 460 | ); 461 | projectRoot = ""; 462 | targets = ( 463 | 13B07F861A680F5B00A75B9A /* RCTHealthKitExample */, 464 | 00E356ED1AD99517003FC87E /* RCTHealthKitExampleTests */, 465 | ); 466 | }; 467 | /* End PBXProject section */ 468 | 469 | /* Begin PBXReferenceProxy section */ 470 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { 471 | isa = PBXReferenceProxy; 472 | fileType = archive.ar; 473 | path = libRCTActionSheet.a; 474 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; 475 | sourceTree = BUILT_PRODUCTS_DIR; 476 | }; 477 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { 478 | isa = PBXReferenceProxy; 479 | fileType = archive.ar; 480 | path = libRCTGeolocation.a; 481 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; 482 | sourceTree = BUILT_PRODUCTS_DIR; 483 | }; 484 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { 485 | isa = PBXReferenceProxy; 486 | fileType = archive.ar; 487 | path = libRCTImage.a; 488 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; 489 | sourceTree = BUILT_PRODUCTS_DIR; 490 | }; 491 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { 492 | isa = PBXReferenceProxy; 493 | fileType = archive.ar; 494 | path = libRCTNetwork.a; 495 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; 496 | sourceTree = BUILT_PRODUCTS_DIR; 497 | }; 498 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { 499 | isa = PBXReferenceProxy; 500 | fileType = archive.ar; 501 | path = libRCTVibration.a; 502 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; 503 | sourceTree = BUILT_PRODUCTS_DIR; 504 | }; 505 | 09384F201B9D20380095EDC7 /* libRCTHealthKit.a */ = { 506 | isa = PBXReferenceProxy; 507 | fileType = archive.ar; 508 | path = libRCTHealthKit.a; 509 | remoteRef = 09384F1F1B9D20380095EDC7 /* PBXContainerItemProxy */; 510 | sourceTree = BUILT_PRODUCTS_DIR; 511 | }; 512 | 09384F221B9D20380095EDC7 /* RCTHealthKitTests.xctest */ = { 513 | isa = PBXReferenceProxy; 514 | fileType = wrapper.cfbundle; 515 | path = RCTHealthKitTests.xctest; 516 | remoteRef = 09384F211B9D20380095EDC7 /* PBXContainerItemProxy */; 517 | sourceTree = BUILT_PRODUCTS_DIR; 518 | }; 519 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { 520 | isa = PBXReferenceProxy; 521 | fileType = archive.ar; 522 | path = libRCTSettings.a; 523 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; 524 | sourceTree = BUILT_PRODUCTS_DIR; 525 | }; 526 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { 527 | isa = PBXReferenceProxy; 528 | fileType = archive.ar; 529 | path = libRCTWebSocket.a; 530 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; 531 | sourceTree = BUILT_PRODUCTS_DIR; 532 | }; 533 | 146834041AC3E56700842450 /* libReact.a */ = { 534 | isa = PBXReferenceProxy; 535 | fileType = archive.ar; 536 | path = libReact.a; 537 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; 538 | sourceTree = BUILT_PRODUCTS_DIR; 539 | }; 540 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { 541 | isa = PBXReferenceProxy; 542 | fileType = archive.ar; 543 | path = libRCTLinking.a; 544 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; 545 | sourceTree = BUILT_PRODUCTS_DIR; 546 | }; 547 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { 548 | isa = PBXReferenceProxy; 549 | fileType = archive.ar; 550 | path = libRCTText.a; 551 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; 552 | sourceTree = BUILT_PRODUCTS_DIR; 553 | }; 554 | /* End PBXReferenceProxy section */ 555 | 556 | /* Begin PBXResourcesBuildPhase section */ 557 | 00E356EC1AD99517003FC87E /* Resources */ = { 558 | isa = PBXResourcesBuildPhase; 559 | buildActionMask = 2147483647; 560 | files = ( 561 | ); 562 | runOnlyForDeploymentPostprocessing = 0; 563 | }; 564 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 565 | isa = PBXResourcesBuildPhase; 566 | buildActionMask = 2147483647; 567 | files = ( 568 | 008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */, 569 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 570 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 571 | ); 572 | runOnlyForDeploymentPostprocessing = 0; 573 | }; 574 | /* End PBXResourcesBuildPhase section */ 575 | 576 | /* Begin PBXSourcesBuildPhase section */ 577 | 00E356EA1AD99517003FC87E /* Sources */ = { 578 | isa = PBXSourcesBuildPhase; 579 | buildActionMask = 2147483647; 580 | files = ( 581 | ); 582 | runOnlyForDeploymentPostprocessing = 0; 583 | }; 584 | 13B07F871A680F5B00A75B9A /* Sources */ = { 585 | isa = PBXSourcesBuildPhase; 586 | buildActionMask = 2147483647; 587 | files = ( 588 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, 589 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 590 | ); 591 | runOnlyForDeploymentPostprocessing = 0; 592 | }; 593 | /* End PBXSourcesBuildPhase section */ 594 | 595 | /* Begin PBXTargetDependency section */ 596 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 597 | isa = PBXTargetDependency; 598 | target = 13B07F861A680F5B00A75B9A /* RCTHealthKitExample */; 599 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 600 | }; 601 | /* End PBXTargetDependency section */ 602 | 603 | /* Begin PBXVariantGroup section */ 604 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { 605 | isa = PBXVariantGroup; 606 | children = ( 607 | 13B07FB21A68108700A75B9A /* Base */, 608 | ); 609 | name = LaunchScreen.xib; 610 | sourceTree = ""; 611 | }; 612 | /* End PBXVariantGroup section */ 613 | 614 | /* Begin XCBuildConfiguration section */ 615 | 00E356F61AD99517003FC87E /* Debug */ = { 616 | isa = XCBuildConfiguration; 617 | buildSettings = { 618 | BUNDLE_LOADER = "$(TEST_HOST)"; 619 | FRAMEWORK_SEARCH_PATHS = ( 620 | "$(SDKROOT)/Developer/Library/Frameworks", 621 | "$(inherited)", 622 | ); 623 | GCC_PREPROCESSOR_DEFINITIONS = ( 624 | "DEBUG=1", 625 | "$(inherited)", 626 | ); 627 | INFOPLIST_FILE = RCTHealthKitExampleTests/Info.plist; 628 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 629 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 630 | PRODUCT_NAME = "$(TARGET_NAME)"; 631 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RCTHealthKitExample.app/RCTHealthKitExample"; 632 | }; 633 | name = Debug; 634 | }; 635 | 00E356F71AD99517003FC87E /* Release */ = { 636 | isa = XCBuildConfiguration; 637 | buildSettings = { 638 | BUNDLE_LOADER = "$(TEST_HOST)"; 639 | COPY_PHASE_STRIP = NO; 640 | FRAMEWORK_SEARCH_PATHS = ( 641 | "$(SDKROOT)/Developer/Library/Frameworks", 642 | "$(inherited)", 643 | ); 644 | INFOPLIST_FILE = RCTHealthKitExampleTests/Info.plist; 645 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 646 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 647 | PRODUCT_NAME = "$(TARGET_NAME)"; 648 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RCTHealthKitExample.app/RCTHealthKitExample"; 649 | }; 650 | name = Release; 651 | }; 652 | 13B07F941A680F5B00A75B9A /* Debug */ = { 653 | isa = XCBuildConfiguration; 654 | buildSettings = { 655 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 656 | CODE_SIGN_ENTITLEMENTS = RCTHealthKitExample/RCTHealthKitExample.entitlements; 657 | CODE_SIGN_IDENTITY = "iPhone Developer"; 658 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 659 | HEADER_SEARCH_PATHS = ( 660 | "$(inherited)", 661 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 662 | "$(SRCROOT)/../node_modules/react-native/React/**", 663 | ); 664 | INFOPLIST_FILE = "$(SRCROOT)/RCTHealthKitExample/Info.plist"; 665 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 666 | OTHER_LDFLAGS = "-ObjC"; 667 | PRODUCT_NAME = RCTHealthKitExample; 668 | PROVISIONING_PROFILE = ""; 669 | }; 670 | name = Debug; 671 | }; 672 | 13B07F951A680F5B00A75B9A /* Release */ = { 673 | isa = XCBuildConfiguration; 674 | buildSettings = { 675 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 676 | CODE_SIGN_ENTITLEMENTS = RCTHealthKitExample/RCTHealthKitExample.entitlements; 677 | CODE_SIGN_IDENTITY = "iPhone Developer"; 678 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 679 | HEADER_SEARCH_PATHS = ( 680 | "$(inherited)", 681 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 682 | "$(SRCROOT)/../node_modules/react-native/React/**", 683 | ); 684 | INFOPLIST_FILE = "$(SRCROOT)/RCTHealthKitExample/Info.plist"; 685 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 686 | OTHER_LDFLAGS = "-ObjC"; 687 | PRODUCT_NAME = RCTHealthKitExample; 688 | PROVISIONING_PROFILE = ""; 689 | }; 690 | name = Release; 691 | }; 692 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 693 | isa = XCBuildConfiguration; 694 | buildSettings = { 695 | ALWAYS_SEARCH_USER_PATHS = NO; 696 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 697 | CLANG_CXX_LIBRARY = "libc++"; 698 | CLANG_ENABLE_MODULES = YES; 699 | CLANG_ENABLE_OBJC_ARC = YES; 700 | CLANG_WARN_BOOL_CONVERSION = YES; 701 | CLANG_WARN_CONSTANT_CONVERSION = YES; 702 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 703 | CLANG_WARN_EMPTY_BODY = YES; 704 | CLANG_WARN_ENUM_CONVERSION = YES; 705 | CLANG_WARN_INT_CONVERSION = YES; 706 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 707 | CLANG_WARN_UNREACHABLE_CODE = YES; 708 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 709 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 710 | COPY_PHASE_STRIP = NO; 711 | ENABLE_STRICT_OBJC_MSGSEND = YES; 712 | GCC_C_LANGUAGE_STANDARD = gnu99; 713 | GCC_DYNAMIC_NO_PIC = NO; 714 | GCC_OPTIMIZATION_LEVEL = 0; 715 | GCC_PREPROCESSOR_DEFINITIONS = ( 716 | "DEBUG=1", 717 | "$(inherited)", 718 | ); 719 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 720 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 721 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 722 | GCC_WARN_UNDECLARED_SELECTOR = YES; 723 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 724 | GCC_WARN_UNUSED_FUNCTION = YES; 725 | GCC_WARN_UNUSED_VARIABLE = YES; 726 | HEADER_SEARCH_PATHS = ( 727 | "$(inherited)", 728 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 729 | "$(SRCROOT)/../node_modules/react-native/React/**", 730 | ); 731 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 732 | MTL_ENABLE_DEBUG_INFO = YES; 733 | ONLY_ACTIVE_ARCH = YES; 734 | SDKROOT = iphoneos; 735 | }; 736 | name = Debug; 737 | }; 738 | 83CBBA211A601CBA00E9B192 /* Release */ = { 739 | isa = XCBuildConfiguration; 740 | buildSettings = { 741 | ALWAYS_SEARCH_USER_PATHS = NO; 742 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 743 | CLANG_CXX_LIBRARY = "libc++"; 744 | CLANG_ENABLE_MODULES = YES; 745 | CLANG_ENABLE_OBJC_ARC = YES; 746 | CLANG_WARN_BOOL_CONVERSION = YES; 747 | CLANG_WARN_CONSTANT_CONVERSION = YES; 748 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 749 | CLANG_WARN_EMPTY_BODY = YES; 750 | CLANG_WARN_ENUM_CONVERSION = YES; 751 | CLANG_WARN_INT_CONVERSION = YES; 752 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 753 | CLANG_WARN_UNREACHABLE_CODE = YES; 754 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 755 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 756 | COPY_PHASE_STRIP = YES; 757 | ENABLE_NS_ASSERTIONS = NO; 758 | ENABLE_STRICT_OBJC_MSGSEND = YES; 759 | GCC_C_LANGUAGE_STANDARD = gnu99; 760 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 761 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 762 | GCC_WARN_UNDECLARED_SELECTOR = YES; 763 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 764 | GCC_WARN_UNUSED_FUNCTION = YES; 765 | GCC_WARN_UNUSED_VARIABLE = YES; 766 | HEADER_SEARCH_PATHS = ( 767 | "$(inherited)", 768 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 769 | "$(SRCROOT)/../node_modules/react-native/React/**", 770 | ); 771 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 772 | MTL_ENABLE_DEBUG_INFO = NO; 773 | SDKROOT = iphoneos; 774 | VALIDATE_PRODUCT = YES; 775 | }; 776 | name = Release; 777 | }; 778 | /* End XCBuildConfiguration section */ 779 | 780 | /* Begin XCConfigurationList section */ 781 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "RCTHealthKitExampleTests" */ = { 782 | isa = XCConfigurationList; 783 | buildConfigurations = ( 784 | 00E356F61AD99517003FC87E /* Debug */, 785 | 00E356F71AD99517003FC87E /* Release */, 786 | ); 787 | defaultConfigurationIsVisible = 0; 788 | defaultConfigurationName = Release; 789 | }; 790 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RCTHealthKitExample" */ = { 791 | isa = XCConfigurationList; 792 | buildConfigurations = ( 793 | 13B07F941A680F5B00A75B9A /* Debug */, 794 | 13B07F951A680F5B00A75B9A /* Release */, 795 | ); 796 | defaultConfigurationIsVisible = 0; 797 | defaultConfigurationName = Release; 798 | }; 799 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RCTHealthKitExample" */ = { 800 | isa = XCConfigurationList; 801 | buildConfigurations = ( 802 | 83CBBA201A601CBA00E9B192 /* Debug */, 803 | 83CBBA211A601CBA00E9B192 /* Release */, 804 | ); 805 | defaultConfigurationIsVisible = 0; 806 | defaultConfigurationName = Release; 807 | }; 808 | /* End XCConfigurationList section */ 809 | }; 810 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 811 | } 812 | --------------------------------------------------------------------------------