├── .watchmanconfig ├── android ├── settings.gradle ├── app │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ └── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ └── com │ │ │ └── reactnativepedometer │ │ │ └── MainActivity.java │ ├── proguard-rules.pro │ └── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── build.gradle ├── gradle.properties ├── gradlew.bat └── gradlew ├── ios ├── MDPedometer.h ├── main.jsbundle ├── reactNativePedometer │ ├── AppDelegate.h │ ├── main.m │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── AppDelegate.m │ └── Base.lproj │ │ └── LaunchScreen.xib ├── reactNativePedometerTests │ ├── Info.plist │ └── reactNativePedometerTests.m ├── MDPedometer.m └── reactNativePedometer.xcodeproj │ ├── xcshareddata │ └── xcschemes │ │ └── reactNativePedometer.xcscheme │ └── project.pbxproj ├── .gitignore ├── package.json ├── Pedometer.js ├── .flowconfig ├── index.ios.js ├── index.android.js └── README.md /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'reactNativePedometer' 2 | 3 | include ':app' 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | reactNativePedometer 3 | 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathieudutour/react-native-pedometer/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathieudutour/react-native-pedometer/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathieudutour/react-native-pedometer/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathieudutour/react-native-pedometer/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathieudutour/react-native-pedometer/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 6 | -------------------------------------------------------------------------------- /ios/MDPedometer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MDPedometer.h 3 | // reactNativePedometer 4 | // 5 | // Created by Mathieu Dutour on 25/09/15. 6 | // Copyright © 2015 Facebook. All rights reserved. 7 | // 8 | 9 | #import "RCTBridge.h" 10 | 11 | @interface MDPedometer : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/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 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/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 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-pedometer", 3 | "version": "0.0.1", 4 | "main": "Pedometer.js", 5 | "nativePackage": true, 6 | "scripts": { 7 | "start": "node_modules/react-native/packager/packager.sh" 8 | }, 9 | "dependencies": { 10 | "react-native": "^0.11.2" 11 | }, 12 | "repository": { 13 | "type" : "git", 14 | "url" : "https://github.com/mathieudutour/react-native-pedometer.git" 15 | }, 16 | "description": "A Pedometer module for React Native.", 17 | "author": "Mathieu Dutour ", 18 | "keywords": [ 19 | "react-native", 20 | "react", 21 | "native", 22 | "pedometer" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/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 | } -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.1" 6 | 7 | defaultConfig { 8 | applicationId "com.reactnativepedometer" 9 | minSdkVersion 16 10 | targetSdkVersion 22 11 | versionCode 1 12 | versionName "1.0" 13 | ndk { 14 | abiFilters "armeabi-v7a", "x86" 15 | } 16 | } 17 | buildTypes { 18 | release { 19 | minifyEnabled false 20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 21 | } 22 | } 23 | } 24 | 25 | dependencies { 26 | compile fileTree(dir: 'libs', include: ['*.jar']) 27 | compile 'com.android.support:appcompat-v7:23.0.0' 28 | compile 'com.facebook.react:react-native:0.11.+' 29 | } 30 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ios/reactNativePedometerTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(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 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /Pedometer.js: -------------------------------------------------------------------------------- 1 | const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); 2 | var { 3 | MDPedometer 4 | } = require('NativeModules'); 5 | 6 | var listener; 7 | 8 | const Pedometer = { 9 | isStepCountingAvailable(callback) { 10 | MDPedometer.isStepCountingAvailable(callback); 11 | }, 12 | isDistanceAvailable(callback) { 13 | MDPedometer.isDistanceAvailable(callback); 14 | callback(null, true); 15 | }, 16 | isFloorCountingAvailable(callback) { 17 | MDPedometer.isFloorCountingAvailable(callback); 18 | }, 19 | 20 | isPaceAvailable(callback) { 21 | MDPedometer.isPaceAvailable(callback); 22 | }, 23 | 24 | isCadenceAvailable(callback) { 25 | MDPedometer.isCadenceAvailable(callback); 26 | }, 27 | 28 | startPedometerUpdatesFromDate(date, handler) { 29 | MDPedometer.startPedometerUpdatesFromDate(date); 30 | listener = RCTDeviceEventEmitter.addListener( 31 | 'pedometerDataDidUpdate', 32 | handler 33 | ); 34 | }, 35 | stopPedometerUpdates() { 36 | MDPedometer.stopPedometerUpdates(); 37 | listener = null; 38 | }, 39 | 40 | queryPedometerDataBetweenDates(startDate, endDate, handler) { 41 | MDPedometer.queryPedometerDataBetweenDates(startDate, endDate, handler); 42 | }, 43 | }; 44 | 45 | module.exports = Pedometer; 46 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(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 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UIViewControllerBasedStatusBarAppearance 38 | 39 | NSLocationWhenInUseUsageDescription 40 | 41 | NSAppTransportSecurity 42 | 43 | 44 | NSAllowsArbitraryLoads 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /index.ios.js: -------------------------------------------------------------------------------- 1 | const React = require('react-native'); 2 | const { 3 | AppRegistry, 4 | StyleSheet, 5 | Text, 6 | View, 7 | } = React; 8 | const Pedometer = require('./Pedometer'); 9 | 10 | const reactNativePedometer = React.createClass({ 11 | getInitialState() { 12 | return { 13 | startDate: null, 14 | endDate: null, 15 | numberOfSteps: 0, 16 | distance: 0, 17 | floorsAscended: 0, 18 | floorsDescended: 0, 19 | currentPace: 0, 20 | currentCadence: 0, 21 | }; 22 | }, 23 | 24 | componentDidMount() { 25 | this._startUpdates(); 26 | }, 27 | 28 | _startUpdates() { 29 | const today = new Date(); 30 | today.setHours(0,0,0,0); 31 | 32 | Pedometer.startPedometerUpdatesFromDate(today.toTime(), (motionData) => { 33 | console.log("motionData: " + motionData); 34 | this.setState(motionData); 35 | }); 36 | }, 37 | 38 | render() { 39 | return ( 40 | 41 | 42 | {this.state.numberOfSteps} 43 | 44 | 45 | You walked {this.state.numberOfSteps} step{this.state.numberOfSteps==1 ? '' : 's'}, or about {this.state.distance} meters. 46 | 47 | 48 | You went up {this.state.floorsAscended} floor{this.state.floorsAscended==1 ? '' : 's'}, and down {this.state.floorsDescended}. 49 | 50 | 51 | Just keep your phone in your pocket and go for a walk! 52 | 53 | 54 | ); 55 | } 56 | }); 57 | 58 | const styles = StyleSheet.create({ 59 | container: { 60 | flex: 1, 61 | justifyContent: 'center', 62 | alignItems: 'center', 63 | backgroundColor: '#F5FCFF', 64 | }, 65 | welcome: { 66 | fontSize: 20, 67 | textAlign: 'center', 68 | margin: 10, 69 | }, 70 | instructions: { 71 | textAlign: 'center', 72 | color: '#333333', 73 | marginBottom: 5, 74 | }, 75 | }); 76 | 77 | AppRegistry.registerComponent('reactNativePedometer', () => reactNativePedometer); 78 | -------------------------------------------------------------------------------- /index.android.js: -------------------------------------------------------------------------------- 1 | const React = require('react-native'); 2 | const { 3 | AppRegistry, 4 | StyleSheet, 5 | Text, 6 | View, 7 | } = React; 8 | const Pedometer = require('./Pedometer'); 9 | 10 | const reactNativePedometer = React.createClass({ 11 | getInitialState() { 12 | return { 13 | startDate: null, 14 | endDate: null, 15 | numberOfSteps: 0, 16 | distance: 0, 17 | floorsAscended: 0, 18 | floorsDescended: 0, 19 | currentPace: 0, 20 | currentCadence: 0, 21 | }; 22 | }, 23 | 24 | componentDidMount() { 25 | this._startUpdates(); 26 | }, 27 | 28 | _startUpdates() { 29 | const today = new Date(); 30 | today.setHours(0,0,0,0); 31 | 32 | Pedometer.startPedometerUpdatesFromDate(today.toTime(), (motionData) => { 33 | console.log("motionData: " + motionData); 34 | this.setState(motionData); 35 | }); 36 | }, 37 | 38 | render() { 39 | return ( 40 | 41 | 42 | {this.state.numberOfSteps} 43 | 44 | 45 | You walked {this.state.numberOfSteps} step{this.state.numberOfSteps==1 ? '' : 's'}, or about {this.state.distance} meters. 46 | 47 | 48 | You went up {this.state.floorsAscended} floor{this.state.floorsAscended==1 ? '' : 's'}, and down {this.state.floorsDescended}. 49 | 50 | 51 | Just keep your phone in your pocket and go for a walk! 52 | 53 | 54 | ); 55 | } 56 | }); 57 | 58 | const styles = StyleSheet.create({ 59 | container: { 60 | flex: 1, 61 | justifyContent: 'center', 62 | alignItems: 'center', 63 | backgroundColor: '#F5FCFF', 64 | }, 65 | welcome: { 66 | fontSize: 20, 67 | textAlign: 'center', 68 | margin: 10, 69 | }, 70 | instructions: { 71 | textAlign: 'center', 72 | color: '#333333', 73 | marginBottom: 5, 74 | }, 75 | }); 76 | 77 | AppRegistry.registerComponent('reactNativePedometer', () => reactNativePedometer); 78 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/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:@"reactNativePedometer" 50 | initialProperties:nil 51 | launchOptions:launchOptions]; 52 | 53 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 54 | UIViewController *rootViewController = [[UIViewController alloc] init]; 55 | rootViewController.view = rootView; 56 | self.window.rootViewController = rootViewController; 57 | [self.window makeKeyAndVisible]; 58 | return YES; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /ios/reactNativePedometerTests/reactNativePedometerTests.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 "RCTLog.h" 14 | #import "RCTRootView.h" 15 | 16 | #define TIMEOUT_SECONDS 240 17 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" 18 | 19 | @interface reactNativePedometerTests : XCTestCase 20 | 21 | @end 22 | 23 | @implementation reactNativePedometerTests 24 | 25 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 26 | { 27 | if (test(view)) { 28 | return YES; 29 | } 30 | for (UIView *subview in [view subviews]) { 31 | if ([self findSubviewInView:subview matching:test]) { 32 | return YES; 33 | } 34 | } 35 | return NO; 36 | } 37 | 38 | - (void)testRendersWelcomeScreen 39 | { 40 | UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; 41 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 42 | BOOL foundElement = NO; 43 | 44 | __block NSString *redboxError = nil; 45 | RCTSetLogFunction(^(RCTLogLevel level, NSString *fileName, NSNumber *lineNumber, NSString *message) { 46 | if (level >= RCTLogLevelError) { 47 | redboxError = message; 48 | } 49 | }); 50 | 51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 54 | 55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 57 | return YES; 58 | } 59 | return NO; 60 | }]; 61 | } 62 | 63 | RCTSetLogFunction(RCTDefaultLogFunction); 64 | 65 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 66 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 67 | } 68 | 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/reactnativepedometer/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.reactnativepedometer; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.KeyEvent; 6 | 7 | import com.facebook.react.LifecycleState; 8 | import com.facebook.react.ReactInstanceManager; 9 | import com.facebook.react.ReactRootView; 10 | import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; 11 | import com.facebook.react.shell.MainReactPackage; 12 | import com.facebook.soloader.SoLoader; 13 | 14 | public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { 15 | 16 | private ReactInstanceManager mReactInstanceManager; 17 | private ReactRootView mReactRootView; 18 | 19 | @Override 20 | protected void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | mReactRootView = new ReactRootView(this); 23 | 24 | mReactInstanceManager = ReactInstanceManager.builder() 25 | .setApplication(getApplication()) 26 | .setBundleAssetName("index.android.bundle") 27 | .setJSMainModuleName("index.android") 28 | .addPackage(new MainReactPackage()) 29 | .setUseDeveloperSupport(BuildConfig.DEBUG) 30 | .setInitialLifecycleState(LifecycleState.RESUMED) 31 | .build(); 32 | 33 | mReactRootView.startReactApplication(mReactInstanceManager, "reactNativePedometer", null); 34 | 35 | setContentView(mReactRootView); 36 | } 37 | 38 | @Override 39 | public boolean onKeyUp(int keyCode, KeyEvent event) { 40 | if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) { 41 | mReactInstanceManager.showDevOptionsDialog(); 42 | return true; 43 | } 44 | return super.onKeyUp(keyCode, event); 45 | } 46 | 47 | @Override 48 | public void invokeDefaultOnBackPressed() { 49 | super.onBackPressed(); 50 | } 51 | 52 | @Override 53 | protected void onPause() { 54 | super.onPause(); 55 | 56 | if (mReactInstanceManager != null) { 57 | mReactInstanceManager.onPause(); 58 | } 59 | } 60 | 61 | @Override 62 | protected void onResume() { 63 | super.onResume(); 64 | 65 | if (mReactInstanceManager != null) { 66 | mReactInstanceManager.onResume(this); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /ios/reactNativePedometer/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /ios/MDPedometer.m: -------------------------------------------------------------------------------- 1 | // 2 | // MDPedometer.m 3 | // reactNativePedometer 4 | // 5 | // Created by Mathieu Dutour on 25/09/15. 6 | // Copyright © 2015 Facebook. All rights reserved. 7 | // 8 | 9 | #import "MDPedometer.h" 10 | 11 | #import 12 | #import "RCTBridge.h" 13 | #import "RCTEventDispatcher.h" 14 | 15 | #define NullErr [NSNull null] 16 | 17 | @interface MDPedometer () 18 | @property (nonatomic, readonly) CMPedometer *pedometer; 19 | @end 20 | 21 | 22 | @implementation MDPedometer 23 | 24 | @synthesize bridge = _bridge; 25 | 26 | RCT_EXPORT_MODULE() 27 | 28 | RCT_EXPORT_METHOD(isStepCountingAvailable:(RCTResponseSenderBlock) callback) { 29 | callback(@[NullErr, @([CMPedometer isStepCountingAvailable])]); 30 | } 31 | 32 | RCT_EXPORT_METHOD(isFloorCountingAvailable:(RCTResponseSenderBlock) callback) { 33 | callback(@[NullErr, @([CMPedometer isFloorCountingAvailable])]); 34 | } 35 | 36 | RCT_EXPORT_METHOD(isDistanceAvailable:(RCTResponseSenderBlock) callback) { 37 | callback(@[NullErr, @([CMPedometer isDistanceAvailable])]); 38 | } 39 | 40 | RCT_EXPORT_METHOD(isCadenceAvailable:(RCTResponseSenderBlock) callback) { 41 | callback(@[NullErr, @([CMPedometer isCadenceAvailable])]); 42 | } 43 | 44 | RCT_EXPORT_METHOD(isPaceAvailable:(RCTResponseSenderBlock) callback) { 45 | callback(@[NullErr, @([CMPedometer isPaceAvailable])]); 46 | } 47 | 48 | RCT_EXPORT_METHOD(queryPedometerDataBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate handler:(RCTResponseSenderBlock)handler) { 49 | [self.pedometer queryPedometerDataFromDate:startDate 50 | toDate:endDate 51 | withHandler:^(CMPedometerData *pedometerData, NSError *error) { 52 | handler(@[error.description?:NullErr, [self dictionaryFromPedometerData:pedometerData]]); 53 | }]; 54 | } 55 | 56 | RCT_EXPORT_METHOD(startPedometerUpdatesFromDate:(NSDate *)date) { 57 | [self.pedometer startPedometerUpdatesFromDate:date?:[NSDate date] 58 | withHandler:^(CMPedometerData *pedometerData, NSError *error) { 59 | if (pedometerData) { 60 | [[self.bridge eventDispatcher] sendDeviceEventWithName:@"pedometerDataDidUpdate" body:[self dictionaryFromPedometerData:pedometerData]]; 61 | } 62 | }]; 63 | } 64 | 65 | - (NSDictionary *)dictionaryFromPedometerData:(CMPedometerData *)data { 66 | 67 | static NSDateFormatter *formatter; 68 | static dispatch_once_t onceToken; 69 | dispatch_once(&onceToken, ^{ 70 | formatter = [[NSDateFormatter alloc] init]; 71 | formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; 72 | formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 73 | formatter.timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; 74 | }); 75 | return @{ 76 | 77 | @"startDate": [formatter stringFromDate:data.startDate]?:NullErr, 78 | @"endDate": [formatter stringFromDate:data.endDate]?:NullErr, 79 | @"numberOfSteps": data.numberOfSteps?:NullErr, 80 | @"distance": data.distance?:NullErr, 81 | @"floorsAscended": data.floorsAscended?:NullErr, 82 | @"floorsDescended": data.floorsDescended?:NullErr, 83 | @"currentPace": data.currentPace?:NullErr, 84 | @"currentCadence": data.currentCadence?:NullErr, 85 | }; 86 | } 87 | 88 | RCT_EXPORT_METHOD(stopPedometerUpdates) { 89 | [self.pedometer stopPedometerUpdates]; 90 | } 91 | 92 | #pragma mark - Private 93 | 94 | - (instancetype)init 95 | { 96 | self = [super init]; 97 | if (self == nil) { 98 | return nil; 99 | } 100 | 101 | _pedometer = [CMPedometer new]; 102 | 103 | return self; 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-native-pedometer 2 | 3 | A pedometer module for React Native. 4 | 5 | ## Getting started 6 | 7 | 1. `npm install react-native-pedometer --save` 8 | 2. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]` 9 | 3. Go to `node_modules` ➜ `react-native-pedometer/ios` and add `reactNativePedometer.xcodeproj` 10 | 4. In XCode, in the project navigator, select your project. Add `libreactNativePedometer.a` to your project's `Build Phases` ➜ `Link Binary With Libraries` 11 | 12 | ## Usage 13 | 14 | All you need is to `require` the `react-native-pedometer` module. 15 | 16 | ```javascript 17 | const React = require('react-native'); 18 | const { 19 | AppRegistry, 20 | StyleSheet, 21 | Text, 22 | View, 23 | } = React; 24 | const Pedometer = require('./Pedometer'); 25 | 26 | const reactNativePedometer = React.createClass({ 27 | getInitialState() { 28 | return { 29 | startDate: null, 30 | endDate: null, 31 | numberOfSteps: 0, 32 | distance: 0, 33 | floorsAscended: 0, 34 | floorsDescended: 0, 35 | currentPace: 0, 36 | currentCadence: 0, 37 | }; 38 | }, 39 | 40 | componentDidMount() { 41 | this._startUpdates(); 42 | }, 43 | 44 | _startUpdates() { 45 | const today = new Date(); 46 | today.setHours(0,0,0,0); 47 | 48 | Pedometer.startPedometerUpdatesFromDate(today.toTime(), (motionData) => { 49 | console.log("motionData: " + motionData); 50 | this.setState(motionData); 51 | }); 52 | }, 53 | 54 | render() { 55 | return ( 56 | 57 | 58 | {this.state.numberOfSteps} 59 | 60 | 61 | You walked {this.state.numberOfSteps} step{this.state.numberOfSteps==1 ? '' : 's'}, or about {this.state.distance} meters. 62 | 63 | 64 | You went up {this.state.floorsAscended} floor{this.state.floorsAscended==1 ? '' : 's'}, and down {this.state.floorsDescended}. 65 | 66 | 67 | Just keep your phone in your pocket and go for a walk! 68 | 69 | 70 | ); 71 | } 72 | }); 73 | 74 | const styles = StyleSheet.create({ 75 | container: { 76 | flex: 1, 77 | justifyContent: 'center', 78 | alignItems: 'center', 79 | backgroundColor: '#F5FCFF', 80 | }, 81 | welcome: { 82 | fontSize: 20, 83 | textAlign: 'center', 84 | margin: 10, 85 | }, 86 | instructions: { 87 | textAlign: 'center', 88 | color: '#333333', 89 | marginBottom: 5, 90 | }, 91 | }); 92 | 93 | AppRegistry.registerComponent('reactNativePedometer', () => reactNativePedometer); 94 | ``` 95 | 96 | ## methods 97 | 98 | #### `isStepCountingAvailable(callback)` 99 | 100 | The callback has 2 arguments: `(err, true | false)` 101 | 102 | #### `isDistanceAvailable(callback)` 103 | 104 | The callback has 2 arguments: `(err, true | false)` 105 | 106 | #### `isFloorCountingAvailable(callback)` 107 | 108 | The callback has 2 arguments: `(err, true | false)` 109 | 110 | #### `isPaceAvailable(callback)` 111 | 112 | The callback has 2 arguments: `(err, true | false)` 113 | 114 | #### `isCadenceAvailable(callback)` 115 | 116 | The callback has 2 arguments: `(err, true | false)` 117 | 118 | #### `startPedometerUpdatesFromDate(date, callback)` 119 | 120 | The callback has 2 arguments: `(err, data)`. `data` has the following shape: 121 | ``` 122 | { 123 | startDate: Date, 124 | endDate: Date, 125 | numberOfSteps: Number, 126 | distance: Number, 127 | floorsAscended: Number, 128 | floorsDescended: Number, 129 | currentPace: Number, 130 | currentCadence: Number, 131 | } 132 | ``` 133 | 134 | #### `stopPedometerUpdates()` 135 | 136 | The callback has 2 arguments: `(err, true | false)` 137 | 138 | #### `queryPedometerDataBetweenDates(startDate, endDate, callback)` 139 | 140 | The callback has 2 arguments: `(err, data)`. `data` has the following shape: 141 | ``` 142 | { 143 | startDate: Date, 144 | endDate: Date, 145 | numberOfSteps: Number, 146 | distance: Number, 147 | floorsAscended: Number, 148 | floorsDescended: Number, 149 | currentPace: Number, 150 | currentCadence: Number, 151 | } 152 | ``` 153 | -------------------------------------------------------------------------------- /ios/reactNativePedometer.xcodeproj/xcshareddata/xcschemes/reactNativePedometer.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 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /ios/reactNativePedometer.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 | 00E356F31AD99517003FC87E /* reactNativePedometerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* reactNativePedometerTests.m */; }; 17 | 03D828951BB5831D008C0D40 /* MDPedometer.m in Sources */ = {isa = PBXBuildFile; fileRef = 03D828941BB5831D008C0D40 /* MDPedometer.m */; settings = {ASSET_TAGS = (); }; }; 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 = reactNativePedometer; 71 | }; 72 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { 73 | isa = PBXContainerItemProxy; 74 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 75 | proxyType = 2; 76 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 77 | remoteInfo = RCTSettings; 78 | }; 79 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { 80 | isa = PBXContainerItemProxy; 81 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 82 | proxyType = 2; 83 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A; 84 | remoteInfo = RCTWebSocket; 85 | }; 86 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { 87 | isa = PBXContainerItemProxy; 88 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 89 | proxyType = 2; 90 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; 91 | remoteInfo = React; 92 | }; 93 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { 94 | isa = PBXContainerItemProxy; 95 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 96 | proxyType = 2; 97 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 98 | remoteInfo = RCTLinking; 99 | }; 100 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { 101 | isa = PBXContainerItemProxy; 102 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 103 | proxyType = 2; 104 | remoteGlobalIDString = 58B5119B1A9E6C1200147676; 105 | remoteInfo = RCTText; 106 | }; 107 | /* End PBXContainerItemProxy section */ 108 | 109 | /* Begin PBXFileReference section */ 110 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 111 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; 112 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; 113 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; 114 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 115 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 116 | 00E356EE1AD99517003FC87E /* reactNativePedometerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = reactNativePedometerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 117 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 118 | 00E356F21AD99517003FC87E /* reactNativePedometerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = reactNativePedometerTests.m; sourceTree = ""; }; 119 | 03D828931BB5831D008C0D40 /* MDPedometer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDPedometer.h; sourceTree = ""; }; 120 | 03D828941BB5831D008C0D40 /* MDPedometer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDPedometer.m; sourceTree = ""; }; 121 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 122 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 123 | 13B07F961A680F5B00A75B9A /* reactNativePedometer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = reactNativePedometer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 124 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = reactNativePedometer/AppDelegate.h; sourceTree = ""; }; 125 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = reactNativePedometer/AppDelegate.m; sourceTree = ""; }; 126 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 127 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = reactNativePedometer/Images.xcassets; sourceTree = ""; }; 128 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = reactNativePedometer/Info.plist; sourceTree = ""; }; 129 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = reactNativePedometer/main.m; sourceTree = ""; }; 130 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 131 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 132 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 133 | /* End PBXFileReference section */ 134 | 135 | /* Begin PBXFrameworksBuildPhase section */ 136 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 137 | isa = PBXFrameworksBuildPhase; 138 | buildActionMask = 2147483647; 139 | files = ( 140 | ); 141 | runOnlyForDeploymentPostprocessing = 0; 142 | }; 143 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 144 | isa = PBXFrameworksBuildPhase; 145 | buildActionMask = 2147483647; 146 | files = ( 147 | 146834051AC3E58100842450 /* libReact.a in Frameworks */, 148 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 149 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 150 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 151 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, 152 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 153 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 154 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 155 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 156 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 157 | ); 158 | runOnlyForDeploymentPostprocessing = 0; 159 | }; 160 | /* End PBXFrameworksBuildPhase section */ 161 | 162 | /* Begin PBXGroup section */ 163 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, 167 | ); 168 | name = Products; 169 | sourceTree = ""; 170 | }; 171 | 00C302B61ABCB90400DB3ED1 /* Products */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, 175 | ); 176 | name = Products; 177 | sourceTree = ""; 178 | }; 179 | 00C302BC1ABCB91800DB3ED1 /* Products */ = { 180 | isa = PBXGroup; 181 | children = ( 182 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, 183 | ); 184 | name = Products; 185 | sourceTree = ""; 186 | }; 187 | 00C302D41ABCB9D200DB3ED1 /* Products */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, 191 | ); 192 | name = Products; 193 | sourceTree = ""; 194 | }; 195 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = { 196 | isa = PBXGroup; 197 | children = ( 198 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, 199 | ); 200 | name = Products; 201 | sourceTree = ""; 202 | }; 203 | 00E356EF1AD99517003FC87E /* reactNativePedometerTests */ = { 204 | isa = PBXGroup; 205 | children = ( 206 | 00E356F21AD99517003FC87E /* reactNativePedometerTests.m */, 207 | 00E356F01AD99517003FC87E /* Supporting Files */, 208 | ); 209 | path = reactNativePedometerTests; 210 | sourceTree = ""; 211 | }; 212 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 213 | isa = PBXGroup; 214 | children = ( 215 | 00E356F11AD99517003FC87E /* Info.plist */, 216 | ); 217 | name = "Supporting Files"; 218 | sourceTree = ""; 219 | }; 220 | 139105B71AF99BAD00B5F7CC /* Products */ = { 221 | isa = PBXGroup; 222 | children = ( 223 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, 224 | ); 225 | name = Products; 226 | sourceTree = ""; 227 | }; 228 | 139FDEE71B06529A00C62182 /* Products */ = { 229 | isa = PBXGroup; 230 | children = ( 231 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 232 | ); 233 | name = Products; 234 | sourceTree = ""; 235 | }; 236 | 13B07FAE1A68108700A75B9A /* reactNativePedometer */ = { 237 | isa = PBXGroup; 238 | children = ( 239 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 240 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 241 | 13B07FB01A68108700A75B9A /* AppDelegate.m */, 242 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 243 | 13B07FB61A68108700A75B9A /* Info.plist */, 244 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 245 | 13B07FB71A68108700A75B9A /* main.m */, 246 | 03D828931BB5831D008C0D40 /* MDPedometer.h */, 247 | 03D828941BB5831D008C0D40 /* MDPedometer.m */, 248 | ); 249 | name = reactNativePedometer; 250 | sourceTree = ""; 251 | }; 252 | 146834001AC3E56700842450 /* Products */ = { 253 | isa = PBXGroup; 254 | children = ( 255 | 146834041AC3E56700842450 /* libReact.a */, 256 | ); 257 | name = Products; 258 | sourceTree = ""; 259 | }; 260 | 78C398B11ACF4ADC00677621 /* Products */ = { 261 | isa = PBXGroup; 262 | children = ( 263 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, 264 | ); 265 | name = Products; 266 | sourceTree = ""; 267 | }; 268 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 269 | isa = PBXGroup; 270 | children = ( 271 | 146833FF1AC3E56700842450 /* React.xcodeproj */, 272 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 273 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, 274 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, 275 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, 276 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, 277 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, 278 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 279 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 280 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 281 | ); 282 | name = Libraries; 283 | sourceTree = ""; 284 | }; 285 | 832341B11AAA6A8300B99B32 /* Products */ = { 286 | isa = PBXGroup; 287 | children = ( 288 | 832341B51AAA6A8300B99B32 /* libRCTText.a */, 289 | ); 290 | name = Products; 291 | sourceTree = ""; 292 | }; 293 | 83CBB9F61A601CBA00E9B192 = { 294 | isa = PBXGroup; 295 | children = ( 296 | 13B07FAE1A68108700A75B9A /* reactNativePedometer */, 297 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 298 | 00E356EF1AD99517003FC87E /* reactNativePedometerTests */, 299 | 83CBBA001A601CBA00E9B192 /* Products */, 300 | ); 301 | indentWidth = 2; 302 | sourceTree = ""; 303 | tabWidth = 2; 304 | }; 305 | 83CBBA001A601CBA00E9B192 /* Products */ = { 306 | isa = PBXGroup; 307 | children = ( 308 | 13B07F961A680F5B00A75B9A /* reactNativePedometer.app */, 309 | 00E356EE1AD99517003FC87E /* reactNativePedometerTests.xctest */, 310 | ); 311 | name = Products; 312 | sourceTree = ""; 313 | }; 314 | /* End PBXGroup section */ 315 | 316 | /* Begin PBXNativeTarget section */ 317 | 00E356ED1AD99517003FC87E /* reactNativePedometerTests */ = { 318 | isa = PBXNativeTarget; 319 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "reactNativePedometerTests" */; 320 | buildPhases = ( 321 | 00E356EA1AD99517003FC87E /* Sources */, 322 | 00E356EB1AD99517003FC87E /* Frameworks */, 323 | 00E356EC1AD99517003FC87E /* Resources */, 324 | ); 325 | buildRules = ( 326 | ); 327 | dependencies = ( 328 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 329 | ); 330 | name = reactNativePedometerTests; 331 | productName = reactNativePedometerTests; 332 | productReference = 00E356EE1AD99517003FC87E /* reactNativePedometerTests.xctest */; 333 | productType = "com.apple.product-type.bundle.unit-test"; 334 | }; 335 | 13B07F861A680F5B00A75B9A /* reactNativePedometer */ = { 336 | isa = PBXNativeTarget; 337 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactNativePedometer" */; 338 | buildPhases = ( 339 | 13B07F871A680F5B00A75B9A /* Sources */, 340 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 341 | 13B07F8E1A680F5B00A75B9A /* Resources */, 342 | ); 343 | buildRules = ( 344 | ); 345 | dependencies = ( 346 | ); 347 | name = reactNativePedometer; 348 | productName = "Hello World"; 349 | productReference = 13B07F961A680F5B00A75B9A /* reactNativePedometer.app */; 350 | productType = "com.apple.product-type.application"; 351 | }; 352 | /* End PBXNativeTarget section */ 353 | 354 | /* Begin PBXProject section */ 355 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 356 | isa = PBXProject; 357 | attributes = { 358 | LastUpgradeCheck = 0610; 359 | ORGANIZATIONNAME = Facebook; 360 | TargetAttributes = { 361 | 00E356ED1AD99517003FC87E = { 362 | CreatedOnToolsVersion = 6.2; 363 | TestTargetID = 13B07F861A680F5B00A75B9A; 364 | }; 365 | }; 366 | }; 367 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactNativePedometer" */; 368 | compatibilityVersion = "Xcode 3.2"; 369 | developmentRegion = English; 370 | hasScannedForEncodings = 0; 371 | knownRegions = ( 372 | en, 373 | Base, 374 | ); 375 | mainGroup = 83CBB9F61A601CBA00E9B192; 376 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 377 | projectDirPath = ""; 378 | projectReferences = ( 379 | { 380 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; 381 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 382 | }, 383 | { 384 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; 385 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 386 | }, 387 | { 388 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; 389 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 390 | }, 391 | { 392 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; 393 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 394 | }, 395 | { 396 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; 397 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 398 | }, 399 | { 400 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; 401 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 402 | }, 403 | { 404 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; 405 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 406 | }, 407 | { 408 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; 409 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 410 | }, 411 | { 412 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */; 413 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 414 | }, 415 | { 416 | ProductGroup = 146834001AC3E56700842450 /* Products */; 417 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; 418 | }, 419 | ); 420 | projectRoot = ""; 421 | targets = ( 422 | 13B07F861A680F5B00A75B9A /* reactNativePedometer */, 423 | 00E356ED1AD99517003FC87E /* reactNativePedometerTests */, 424 | ); 425 | }; 426 | /* End PBXProject section */ 427 | 428 | /* Begin PBXReferenceProxy section */ 429 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { 430 | isa = PBXReferenceProxy; 431 | fileType = archive.ar; 432 | path = libRCTActionSheet.a; 433 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; 434 | sourceTree = BUILT_PRODUCTS_DIR; 435 | }; 436 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { 437 | isa = PBXReferenceProxy; 438 | fileType = archive.ar; 439 | path = libRCTGeolocation.a; 440 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; 441 | sourceTree = BUILT_PRODUCTS_DIR; 442 | }; 443 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { 444 | isa = PBXReferenceProxy; 445 | fileType = archive.ar; 446 | path = libRCTImage.a; 447 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; 448 | sourceTree = BUILT_PRODUCTS_DIR; 449 | }; 450 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { 451 | isa = PBXReferenceProxy; 452 | fileType = archive.ar; 453 | path = libRCTNetwork.a; 454 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; 455 | sourceTree = BUILT_PRODUCTS_DIR; 456 | }; 457 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { 458 | isa = PBXReferenceProxy; 459 | fileType = archive.ar; 460 | path = libRCTVibration.a; 461 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; 462 | sourceTree = BUILT_PRODUCTS_DIR; 463 | }; 464 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { 465 | isa = PBXReferenceProxy; 466 | fileType = archive.ar; 467 | path = libRCTSettings.a; 468 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; 469 | sourceTree = BUILT_PRODUCTS_DIR; 470 | }; 471 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { 472 | isa = PBXReferenceProxy; 473 | fileType = archive.ar; 474 | path = libRCTWebSocket.a; 475 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; 476 | sourceTree = BUILT_PRODUCTS_DIR; 477 | }; 478 | 146834041AC3E56700842450 /* libReact.a */ = { 479 | isa = PBXReferenceProxy; 480 | fileType = archive.ar; 481 | path = libReact.a; 482 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; 483 | sourceTree = BUILT_PRODUCTS_DIR; 484 | }; 485 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { 486 | isa = PBXReferenceProxy; 487 | fileType = archive.ar; 488 | path = libRCTLinking.a; 489 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; 490 | sourceTree = BUILT_PRODUCTS_DIR; 491 | }; 492 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { 493 | isa = PBXReferenceProxy; 494 | fileType = archive.ar; 495 | path = libRCTText.a; 496 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; 497 | sourceTree = BUILT_PRODUCTS_DIR; 498 | }; 499 | /* End PBXReferenceProxy section */ 500 | 501 | /* Begin PBXResourcesBuildPhase section */ 502 | 00E356EC1AD99517003FC87E /* Resources */ = { 503 | isa = PBXResourcesBuildPhase; 504 | buildActionMask = 2147483647; 505 | files = ( 506 | ); 507 | runOnlyForDeploymentPostprocessing = 0; 508 | }; 509 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 510 | isa = PBXResourcesBuildPhase; 511 | buildActionMask = 2147483647; 512 | files = ( 513 | 008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */, 514 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 515 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 516 | ); 517 | runOnlyForDeploymentPostprocessing = 0; 518 | }; 519 | /* End PBXResourcesBuildPhase section */ 520 | 521 | /* Begin PBXSourcesBuildPhase section */ 522 | 00E356EA1AD99517003FC87E /* Sources */ = { 523 | isa = PBXSourcesBuildPhase; 524 | buildActionMask = 2147483647; 525 | files = ( 526 | 00E356F31AD99517003FC87E /* reactNativePedometerTests.m in Sources */, 527 | ); 528 | runOnlyForDeploymentPostprocessing = 0; 529 | }; 530 | 13B07F871A680F5B00A75B9A /* Sources */ = { 531 | isa = PBXSourcesBuildPhase; 532 | buildActionMask = 2147483647; 533 | files = ( 534 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, 535 | 03D828951BB5831D008C0D40 /* MDPedometer.m in Sources */, 536 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 537 | ); 538 | runOnlyForDeploymentPostprocessing = 0; 539 | }; 540 | /* End PBXSourcesBuildPhase section */ 541 | 542 | /* Begin PBXTargetDependency section */ 543 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 544 | isa = PBXTargetDependency; 545 | target = 13B07F861A680F5B00A75B9A /* reactNativePedometer */; 546 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 547 | }; 548 | /* End PBXTargetDependency section */ 549 | 550 | /* Begin PBXVariantGroup section */ 551 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { 552 | isa = PBXVariantGroup; 553 | children = ( 554 | 13B07FB21A68108700A75B9A /* Base */, 555 | ); 556 | name = LaunchScreen.xib; 557 | path = reactNativePedometer; 558 | sourceTree = ""; 559 | }; 560 | /* End PBXVariantGroup section */ 561 | 562 | /* Begin XCBuildConfiguration section */ 563 | 00E356F61AD99517003FC87E /* Debug */ = { 564 | isa = XCBuildConfiguration; 565 | buildSettings = { 566 | BUNDLE_LOADER = "$(TEST_HOST)"; 567 | FRAMEWORK_SEARCH_PATHS = ( 568 | "$(SDKROOT)/Developer/Library/Frameworks", 569 | "$(inherited)", 570 | ); 571 | GCC_PREPROCESSOR_DEFINITIONS = ( 572 | "DEBUG=1", 573 | "$(inherited)", 574 | ); 575 | INFOPLIST_FILE = reactNativePedometerTests/Info.plist; 576 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 577 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 578 | PRODUCT_NAME = "$(TARGET_NAME)"; 579 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactNativePedometer.app/reactNativePedometer"; 580 | }; 581 | name = Debug; 582 | }; 583 | 00E356F71AD99517003FC87E /* Release */ = { 584 | isa = XCBuildConfiguration; 585 | buildSettings = { 586 | BUNDLE_LOADER = "$(TEST_HOST)"; 587 | COPY_PHASE_STRIP = NO; 588 | FRAMEWORK_SEARCH_PATHS = ( 589 | "$(SDKROOT)/Developer/Library/Frameworks", 590 | "$(inherited)", 591 | ); 592 | INFOPLIST_FILE = reactNativePedometerTests/Info.plist; 593 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 594 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 595 | PRODUCT_NAME = "$(TARGET_NAME)"; 596 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactNativePedometer.app/reactNativePedometer"; 597 | }; 598 | name = Release; 599 | }; 600 | 13B07F941A680F5B00A75B9A /* Debug */ = { 601 | isa = XCBuildConfiguration; 602 | buildSettings = { 603 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 604 | HEADER_SEARCH_PATHS = ( 605 | "$(inherited)", 606 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 607 | "$(SRCROOT)/../node_modules/react-native/React/**", 608 | ); 609 | INFOPLIST_FILE = reactNativePedometer/Info.plist; 610 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 611 | OTHER_LDFLAGS = "-ObjC"; 612 | PRODUCT_NAME = reactNativePedometer; 613 | }; 614 | name = Debug; 615 | }; 616 | 13B07F951A680F5B00A75B9A /* Release */ = { 617 | isa = XCBuildConfiguration; 618 | buildSettings = { 619 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 620 | HEADER_SEARCH_PATHS = ( 621 | "$(inherited)", 622 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 623 | "$(SRCROOT)/../node_modules/react-native/React/**", 624 | ); 625 | INFOPLIST_FILE = reactNativePedometer/Info.plist; 626 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 627 | OTHER_LDFLAGS = "-ObjC"; 628 | PRODUCT_NAME = reactNativePedometer; 629 | }; 630 | name = Release; 631 | }; 632 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 633 | isa = XCBuildConfiguration; 634 | buildSettings = { 635 | ALWAYS_SEARCH_USER_PATHS = NO; 636 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 637 | CLANG_CXX_LIBRARY = "libc++"; 638 | CLANG_ENABLE_MODULES = YES; 639 | CLANG_ENABLE_OBJC_ARC = YES; 640 | CLANG_WARN_BOOL_CONVERSION = YES; 641 | CLANG_WARN_CONSTANT_CONVERSION = YES; 642 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 643 | CLANG_WARN_EMPTY_BODY = YES; 644 | CLANG_WARN_ENUM_CONVERSION = YES; 645 | CLANG_WARN_INT_CONVERSION = YES; 646 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 647 | CLANG_WARN_UNREACHABLE_CODE = YES; 648 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 649 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 650 | COPY_PHASE_STRIP = NO; 651 | ENABLE_STRICT_OBJC_MSGSEND = YES; 652 | GCC_C_LANGUAGE_STANDARD = gnu99; 653 | GCC_DYNAMIC_NO_PIC = NO; 654 | GCC_OPTIMIZATION_LEVEL = 0; 655 | GCC_PREPROCESSOR_DEFINITIONS = ( 656 | "DEBUG=1", 657 | "$(inherited)", 658 | ); 659 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 660 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 661 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 662 | GCC_WARN_UNDECLARED_SELECTOR = YES; 663 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 664 | GCC_WARN_UNUSED_FUNCTION = YES; 665 | GCC_WARN_UNUSED_VARIABLE = YES; 666 | HEADER_SEARCH_PATHS = ( 667 | "$(inherited)", 668 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 669 | "$(SRCROOT)/../node_modules/react-native/React/**", 670 | ); 671 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 672 | MTL_ENABLE_DEBUG_INFO = YES; 673 | ONLY_ACTIVE_ARCH = YES; 674 | SDKROOT = iphoneos; 675 | }; 676 | name = Debug; 677 | }; 678 | 83CBBA211A601CBA00E9B192 /* Release */ = { 679 | isa = XCBuildConfiguration; 680 | buildSettings = { 681 | ALWAYS_SEARCH_USER_PATHS = NO; 682 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 683 | CLANG_CXX_LIBRARY = "libc++"; 684 | CLANG_ENABLE_MODULES = YES; 685 | CLANG_ENABLE_OBJC_ARC = YES; 686 | CLANG_WARN_BOOL_CONVERSION = YES; 687 | CLANG_WARN_CONSTANT_CONVERSION = YES; 688 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 689 | CLANG_WARN_EMPTY_BODY = YES; 690 | CLANG_WARN_ENUM_CONVERSION = YES; 691 | CLANG_WARN_INT_CONVERSION = YES; 692 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 693 | CLANG_WARN_UNREACHABLE_CODE = YES; 694 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 695 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 696 | COPY_PHASE_STRIP = YES; 697 | ENABLE_NS_ASSERTIONS = NO; 698 | ENABLE_STRICT_OBJC_MSGSEND = YES; 699 | GCC_C_LANGUAGE_STANDARD = gnu99; 700 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 701 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 702 | GCC_WARN_UNDECLARED_SELECTOR = YES; 703 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 704 | GCC_WARN_UNUSED_FUNCTION = YES; 705 | GCC_WARN_UNUSED_VARIABLE = YES; 706 | HEADER_SEARCH_PATHS = ( 707 | "$(inherited)", 708 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 709 | "$(SRCROOT)/../node_modules/react-native/React/**", 710 | ); 711 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 712 | MTL_ENABLE_DEBUG_INFO = NO; 713 | SDKROOT = iphoneos; 714 | VALIDATE_PRODUCT = YES; 715 | }; 716 | name = Release; 717 | }; 718 | /* End XCBuildConfiguration section */ 719 | 720 | /* Begin XCConfigurationList section */ 721 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "reactNativePedometerTests" */ = { 722 | isa = XCConfigurationList; 723 | buildConfigurations = ( 724 | 00E356F61AD99517003FC87E /* Debug */, 725 | 00E356F71AD99517003FC87E /* Release */, 726 | ); 727 | defaultConfigurationIsVisible = 0; 728 | defaultConfigurationName = Release; 729 | }; 730 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactNativePedometer" */ = { 731 | isa = XCConfigurationList; 732 | buildConfigurations = ( 733 | 13B07F941A680F5B00A75B9A /* Debug */, 734 | 13B07F951A680F5B00A75B9A /* Release */, 735 | ); 736 | defaultConfigurationIsVisible = 0; 737 | defaultConfigurationName = Release; 738 | }; 739 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactNativePedometer" */ = { 740 | isa = XCConfigurationList; 741 | buildConfigurations = ( 742 | 83CBBA201A601CBA00E9B192 /* Debug */, 743 | 83CBBA211A601CBA00E9B192 /* Release */, 744 | ); 745 | defaultConfigurationIsVisible = 0; 746 | defaultConfigurationName = Release; 747 | }; 748 | /* End XCConfigurationList section */ 749 | }; 750 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 751 | } 752 | --------------------------------------------------------------------------------