diff --git a/.gitignore b/.gitignore index acb199a..306be04 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ local.properties # node_modules/ npm-debug.log +package-lock.json # BUCK buck-out/ diff --git a/.vscode/ipch/c1c9645d421b193a/mmap_address.bin b/.vscode/ipch/c1c9645d421b193a/mmap_address.bin new file mode 100644 index 0000000..f8ee5b7 Binary files /dev/null and b/.vscode/ipch/c1c9645d421b193a/mmap_address.bin differ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..755dfa0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Asser Data S/A + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index f94f2ff..b9460b6 100644 --- a/README.md +++ b/README.md @@ -2,43 +2,64 @@ React Native pedometer support for iOS version 8.0 and higher and Android. The module is CMPedometer wrapper. More info about CMPedometer can be found in https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMPedometer_class/ -## Basic usage +#### _Note_ + +- Currently typescript is supported. + +### Installation + +1. `npm install --save @JWWon/react-native-universal-pedometer` + +> or `yarn add JWWon/react-native-universal-pedometer` + +2. `react-native link @JWWon/react-native-universal-pedometer` + +> It will automatically do all necessary settings + +##### iOS Configuration + +add **NSMotionUsageDescription** on `ios//info.plist` + +``` +// info.plist + + ... + NSMotionUsageDescription + + +``` + +### General Usage + +```js +import Pedometer from '@JWWon/react-native-universal-pedometer'; +``` + +or ```js -// Import the react-native-pedometer module -import Pedometer from 'react-native-universal-pedometer'; - -// determine pedometer availability -Pedometer.isStepCountingAvailable((error, isAvailable) => { - // do something -}); - -Pedometer.isDistanceAvailable((error, isAvailable) => { - // do something -}); - -Pedometer.isFloorCountingAvailable((error, isAvailable) => { - // do something -}); - -Pedometer.isCadenceAvailable((error, isAvailable) => { - // do something -}); - -// start tracking from current time -const now = new Date(); -Pedometer.startPedometerUpdatesFromDate(now.getTime(), (pedometerData) => { - // do something with pedometer data -}); - -// query pedometer data from selected date to other selected date -const startDate = new Date(); -startDate.setHours(0,0,0,0); -const endDate = new Date(); -Pedometer.queryPedometerDataBetweenDates(startDate.getTime(), endDate.getTime(), (pedometerData) => { - // do something with pedometer data -}); - -// stop pedometer updates -Pedometer.stopPedometerUpdates(); +var Pedometer = require('@JWWon/react-native-universal-pedometer'); ``` + +### Methods + +| Method Name | Arguments | Notes | +| -------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `isStepCountingAvailable` | callback: `Callback` | | +| `isDistanceAvailable` | callback: `Callback` | | +| `isFloorCountingAvailable` | callback: `Callback` | | +| `isPaceAvailable` | callback: `Callback` | | +| `isCadenceAvailable` | callback: `Callback` | | +| `startPedometerUpdatesFromDate` | date: `Date.getTime()`, listener: `Listener` | start tracking from current time | +| `queryPedometerDataBetweenDates` | startDate: `Date.getTime()`, endDate: `Date.getTime()`, listener: `Listener` | query pedometer data from selected date to other selected date | +| `stopPedometerUpdates` | | stop pedometer updates | + +### Types + +| Type Name | Interface | +| ------------------------- | ------------------------------------------------------------ | +| `PedometerInterface` | `{ startDate: nubmer; endDate: number; numberOfSteps: number; distance: number; }` | +| `PedometerErrorInterface` | `{ code: number; message: string; }` | +| `Callback` | `(error: string or null, avaliable: boolean) => any` | +| `Listener` | `(data: PedometerInterface or PedometerErrorInterface) => any` | + diff --git a/android/build.gradle b/android/build.gradle index 37145db..983498f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,14 +1,17 @@ apply plugin: 'com.android.library' +def safeExtGet(prop, fallback) { + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback +} + android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion safeExtGet('compileSdkVersion', 27) defaultConfig { - minSdkVersion 16 - targetSdkVersion 22 - versionCode 1 - versionName "1.0" + minSdkVersion safeExtGet('minSdkVersion', 16) + targetSdkVersion safeExtGet('targetSdkVersion', 27) + versionCode 2 + versionName "1.0.1" ndk { abiFilters "armeabi-v7a", "x86" } @@ -19,5 +22,5 @@ android { } dependencies { - compile 'com.facebook.react:react-native:+' + implementation 'com.facebook.react:react-native:+' } diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..7651326 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,28 @@ +export interface PedometerInterface { + startDate: number; + endDate: number; + numberOfSteps: number; + distance: number; +} + +export interface PedometerErrorInterface { + code: number; + message: string; +} + +type Callback = (error: string | null, available: boolean) => any; + +type Listener = (data: PedometerInterface | PedometerErrorInterface) => any; + +declare const _default: { + isStepCountingAvailable: (callback: Callback) => void; + isDistanceAvailable: (callback: Callback) => void; + isFloorCountingAvailable: (callback: Callback) => void; + isPaceAvailable: (callback: Callback) => void; + isCadenceAvailable: (callback: Callback) => void; + startPedometerUpdatesFromDate: (date: number, listener: Listener) => void; + queryPedometerDataBetweenDates: (startDate: number, endDate: number, listener: Listener) => void; + stopPedometerUpdates: () => void; +}; + +export default _default; diff --git a/index.js b/index.js index 21031c5..3ae0ac7 100644 --- a/index.js +++ b/index.js @@ -1,57 +1,42 @@ 'use strict'; -import {NativeModules, NativeEventEmitter} from 'react-native'; +import { NativeEventEmitter, NativeModules } from 'react-native'; -const {BMDPedometer} = NativeModules; +const { BMDPedometer } = NativeModules; -const EventEmitter = new NativeEventEmitter(BMDPedometer); -let subscription; -let stepsSubscription; +const PedometerEmitter = new NativeEventEmitter(BMDPedometer); export default { - isStepCountingAvailable: callback => { - BMDPedometer.isStepCountingAvailable(callback); - }, - - isDistanceAvailable: callback => { - BMDPedometer.isDistanceAvailable(callback); - }, - - isFloorCountingAvailable: callback => { - BMDPedometer.isFloorCountingAvailable(callback); - }, - - isCadenceAvailable: callback => { - BMDPedometer.isCadenceAvailable(callback); - }, - - startPedometerUpdatesFromDate: (date, handler) => { - BMDPedometer.startPedometerUpdatesFromDate(date); - - subscription = EventEmitter.addListener('pedometerDataDidUpdate', handler); - }, - - startStepsDetection: (handler) => { - BMDPedometer.startStepsDetection(); - - stepsSubscription = EventEmitter.addListener('pedometerWasStep', handler); - }, - - - - queryPedometerDataBetweenDates: (startDate, endDate, handler) => { - BMDPedometer.queryPedometerDataBetweenDates(startDate, endDate, handler); - }, - - stopPedometerUpdates: () => { - BMDPedometer.stopPedometerUpdates(); - - if (subscription) { - subscription.remove(); - } - - if (stepsSubscription) { - stepsSubscription.remove(); - } - } + isStepCountingAvailable: callback => { + BMDPedometer.isStepCountingAvailable(callback); + }, + + isDistanceAvailable: callback => { + BMDPedometer.isDistanceAvailable(callback); + }, + + isFloorCountingAvailable: callback => { + BMDPedometer.isFloorCountingAvailable(callback); + }, + + isPaceAvailable: callback => { + BMDPedometer.isPaceAvailable(callback); + }, + + isCadenceAvailable: callback => { + BMDPedometer.isCadenceAvailable(callback); + }, + + startPedometerUpdatesFromDate: (date, listener) => { + BMDPedometer.startPedometerUpdatesFromDate(date); + PedometerEmitter.addListener('pedometerDataDidUpdate', listener); + }, + + queryPedometerDataBetweenDates: (startDate, endDate, listener) => { + BMDPedometer.queryPedometerDataBetweenDates(startDate, endDate, listener); + }, + + stopPedometerUpdates: () => { + BMDPedometer.stopPedometerUpdates(); + } }; diff --git a/ios/BMDPedometer.xcodeproj/project.pbxproj b/ios/BMDPedometer.xcodeproj/project.pbxproj index 579f88f..3e4b032 100644 --- a/ios/BMDPedometer.xcodeproj/project.pbxproj +++ b/ios/BMDPedometer.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 43D42B5F203B089B00EC7462 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D42B5E203B089B00EC7462 /* CoreMotion.framework */; }; 43D42B61203B08AA00EC7462 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D42B60203B08AA00EC7462 /* CoreLocation.framework */; }; - 43D42B77203B2CB600EC7462 /* SOStepDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 43D42B75203B2CB600EC7462 /* SOStepDetector.m */; }; 844442DC1CB01D4A00E10B29 /* BMDPedometer.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 844442DB1CB01D4A00E10B29 /* BMDPedometer.h */; }; 844442DE1CB01D4A00E10B29 /* BMDPedometer.m in Sources */ = {isa = PBXBuildFile; fileRef = 844442DD1CB01D4A00E10B29 /* BMDPedometer.m */; }; /* End PBXBuildFile section */ @@ -31,8 +30,6 @@ /* Begin PBXFileReference section */ 43D42B5E203B089B00EC7462 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; 43D42B60203B08AA00EC7462 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 43D42B75203B2CB600EC7462 /* SOStepDetector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SOStepDetector.m; sourceTree = ""; }; - 43D42B76203B2CB600EC7462 /* SOStepDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SOStepDetector.h; sourceTree = ""; }; 844442D81CB01D4A00E10B29 /* libBMDPedometer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBMDPedometer.a; sourceTree = BUILT_PRODUCTS_DIR; }; 844442DB1CB01D4A00E10B29 /* BMDPedometer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BMDPedometer.h; sourceTree = ""; }; 844442DD1CB01D4A00E10B29 /* BMDPedometer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BMDPedometer.m; sourceTree = ""; }; @@ -88,8 +85,6 @@ 844442DA1CB01D4A00E10B29 /* BMDPedometer */ = { isa = PBXGroup; children = ( - 43D42B76203B2CB600EC7462 /* SOStepDetector.h */, - 43D42B75203B2CB600EC7462 /* SOStepDetector.m */, 844442DB1CB01D4A00E10B29 /* BMDPedometer.h */, 844442DD1CB01D4A00E10B29 /* BMDPedometer.m */, ); @@ -154,7 +149,6 @@ buildActionMask = 2147483647; files = ( 844442DE1CB01D4A00E10B29 /* BMDPedometer.m in Sources */, - 43D42B77203B2CB600EC7462 /* SOStepDetector.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ios/BMDPedometer/BMDPedometer.h b/ios/BMDPedometer/BMDPedometer.h index 61e7a8c..bd684b6 100644 --- a/ios/BMDPedometer/BMDPedometer.h +++ b/ios/BMDPedometer/BMDPedometer.h @@ -1,8 +1,8 @@ #import +#import #import #import -#import "SOStepDetector.h" @interface BMDPedometer : RCTEventEmitter - +@property (nonatomic, readonly) CMPedometer *pedometer; @end diff --git a/ios/BMDPedometer/BMDPedometer.m b/ios/BMDPedometer/BMDPedometer.m index 071bb0d..f4c9344 100644 --- a/ios/BMDPedometer/BMDPedometer.m +++ b/ios/BMDPedometer/BMDPedometer.m @@ -1,48 +1,52 @@ #import "BMDPedometer.h" -#import "SOStepDetector.h" - #import -#import -#import +#import + +#define NullErr [NSNull null] @interface BMDPedometer () -@property (nonatomic, readonly) CMPedometer *pedometer; +@property (nonatomic, readwrite) CMPedometer *pedometer; @end @implementation BMDPedometer -@synthesize bridge = _bridge; ++ (BOOL)requiresMainQueueSetup +{ + return YES; +} -RCT_EXPORT_MODULE(); +RCT_EXPORT_MODULE() - (NSArray *)supportedEvents{ + return @[@"pedometerDataDidUpdate"]; +} - return @[@"pedometerDataDidUpdate", @"pedometerWasStep"]; +RCT_EXPORT_METHOD(isStepCountingAvailable:(RCTResponseSenderBlock) callback) { + callback(@[NullErr, @([CMPedometer isStepCountingAvailable])]); } -+ (BOOL)requiresMainQueueSetup -{ - return YES; +RCT_EXPORT_METHOD(isFloorCountingAvailable:(RCTResponseSenderBlock) callback) { + callback(@[NullErr, @([CMPedometer isFloorCountingAvailable])]); } -RCT_EXPORT_METHOD(isStepCountingAvailable:(RCTResponseSenderBlock)callback) { - callback(@[[NSNull null], @([CMPedometer isStepCountingAvailable])]); +RCT_EXPORT_METHOD(isDistanceAvailable:(RCTResponseSenderBlock) callback) { + callback(@[NullErr, @([CMPedometer isDistanceAvailable])]); } -RCT_EXPORT_METHOD(isFloorCountingAvailable:(RCTResponseSenderBlock) callback) { - callback(@[[NSNull null], @([CMPedometer isFloorCountingAvailable])]); +RCT_EXPORT_METHOD(isCadenceAvailable: (RCTResponseSenderBlock) callback) { + callback(@[NullErr, @([CMPedometer isCadenceAvailable])]); } -RCT_EXPORT_METHOD(isDistanceAvailable:(RCTResponseSenderBlock) callback) { - callback(@[[NSNull null], @([CMPedometer isDistanceAvailable])]); +RCT_EXPORT_METHOD(isPaceAvailable: (RCTResponseSenderBlock) callback) { + callback(@[NullErr, @([CMPedometer isPaceAvailable])]); } RCT_EXPORT_METHOD(queryPedometerDataBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate handler:(RCTResponseSenderBlock)handler) { [self.pedometer queryPedometerDataFromDate:startDate toDate:endDate withHandler:^(CMPedometerData *pedometerData, NSError *error) { - handler(@[error.description?:[NSNull null], [self dictionaryFromPedometerData:pedometerData]]); + handler(@[error.description?:NullErr, [self dictionaryFromPedometerData:pedometerData]]); }]; } @@ -65,30 +69,21 @@ - (NSDictionary *)dictionaryFromPedometerData:(CMPedometerData *)data { formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; formatter.timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; }); - + return @{ - @"startDate": [formatter stringFromDate:data.startDate]?:[NSNull null], - @"endDate": [formatter stringFromDate:data.endDate]?:[NSNull null], - @"numberOfSteps": data.numberOfSteps?:[NSNull null], - @"distance": data.distance?:[NSNull null], - @"floorsAscended": data.floorsAscended?:[NSNull null], - @"floorsDescended": data.floorsDescended?:[NSNull null], + @"startDate": [formatter stringFromDate:data.startDate]?:NullErr, + @"endDate": [formatter stringFromDate:data.endDate]?:NullErr, + @"numberOfSteps": data.numberOfSteps?:NullErr, + @"distance": data.distance?:NullErr, + @"floorsAscended": data.floorsAscended?:NullErr, + @"floorsDescended": data.floorsDescended?:NullErr, + @"currentPace": data.currentPace?:NullErr, + @"currentCadence": data.currentCadence?:NullErr, }; } -RCT_EXPORT_METHOD(startStepsDetection) { - [[SOStepDetector sharedInstance] startDetectionWithUpdateBlock:^(NSError *error) { - if(error) { - return; - } else { - [self sendEventWithName:@"pedometerWasStep" body:@true]; - } - }]; -} - RCT_EXPORT_METHOD(stopPedometerUpdates) { [self.pedometer stopPedometerUpdates]; - [[SOStepDetector sharedInstance] stopDetection]; } #pragma mark - Private @@ -100,10 +95,9 @@ - (instancetype)init return nil; } - _pedometer = [[CMPedometer alloc]init]; + _pedometer = [CMPedometer new]; return self; } - @end diff --git a/ios/BMDPedometer/SOStepDetector.h b/ios/BMDPedometer/SOStepDetector.h deleted file mode 100755 index deab582..0000000 --- a/ios/BMDPedometer/SOStepDetector.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// SOMotionDetecter.h -// MotionDetection -// -// The MIT License (MIT) -// -// Created by : arturdev -// Copyright (c) 2014 SocialObjects Software. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE - -#import - -@interface SOStepDetector : NSObject - -+ (instancetype)sharedInstance; - -/** - * Start accelerometer updates. - * @param callback Will be called every time when new step is detected - */ -- (void)startDetectionWithUpdateBlock:(void(^)(NSError *error))callback; - -/** - * Stop motion manager accelerometer updates - */ -- (void)stopDetection; - -@end diff --git a/ios/BMDPedometer/SOStepDetector.m b/ios/BMDPedometer/SOStepDetector.m deleted file mode 100755 index 433d489..0000000 --- a/ios/BMDPedometer/SOStepDetector.m +++ /dev/null @@ -1,94 +0,0 @@ - -// -// SOStepDetector.m -// MotionDetection -// -// Created by Artur on 5/15/15. -// Copyright (c) 2015 Artur Mkrtchyan. All rights reserved. -// - -#import -#import "SOStepDetector.h" -#import - -#define kUpdateInterval 0.2f -@interface SOStepDetector() - -@property (strong, nonatomic) CMMotionManager *motionManager; -@property (strong, nonatomic) NSOperationQueue* queue; - -@end - -@implementation SOStepDetector - -+ (instancetype)sharedInstance -{ - static id instance; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - instance = [self new]; - }); - - return instance; -} - -- (instancetype)init -{ - self = [super init]; - - self.motionManager = [CMMotionManager new]; - - self.motionManager.accelerometerUpdateInterval = kUpdateInterval; - self.motionManager.deviceMotionUpdateInterval = kUpdateInterval; - self.motionManager.gyroUpdateInterval = kUpdateInterval; - self.motionManager.magnetometerUpdateInterval = kUpdateInterval; - self.motionManager.showsDeviceMovementDisplay = YES; - - self.queue = [NSOperationQueue new]; - self.queue.maxConcurrentOperationCount = 1; - - return self; -} - -- (void)startDetectionWithUpdateBlock:(void (^)(NSError *))callback -{ - if (self.motionManager.isAccelerometerActive) { - return; - } - - [self.motionManager startAccelerometerUpdatesToQueue:self.queue - withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { - if (error) { - if (callback) { - dispatch_async(dispatch_get_main_queue(), ^{ - callback (error); - }); - } - return; - } - - CMAcceleration acceleration = accelerometerData.acceleration; - - CGFloat strength = 1.2f; - BOOL isStep = NO; - if (fabs(acceleration.x) > strength || fabs(acceleration.y) > strength || fabs(acceleration.z) > strength) { - isStep = YES; - } - if (isStep) { - if (callback) { - dispatch_async(dispatch_get_main_queue(), ^{ - callback (nil); - }); - } - } - }]; -} - -- (void)stopDetection -{ - if (self.motionManager.isAccelerometerActive) { - [self.motionManager stopAccelerometerUpdates]; - } -} - -@end diff --git a/package.json b/package.json index 45f046f..f1fdf85 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "react-native-universal-pedometer", - "version": "0.2.0", - "description": "React Native universal pedometer.", + "name": "@JWWon/react-native-universal-pedometer", + "version": "1.0.3", + "description": "React Native universal pedometer. This is a fork from @asserdata/react-native-universal-pedometer.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -16,11 +16,14 @@ "universal", "pedometer" ], - "author": "Matheus Mariano", - "license": "ISC", + "author": "Jiwoon Won", + "license": "MIT", + "types": "./lib/index.d.ts", "bugs": { - "url": "https://github.com/matheusmariano/react-native-universal-pedometer/issues" + "url": "https://github.com/JWWon/react-native-universal-pedometer/issues" }, - "homepage": "https://github.com/matheusmariano/react-native-universal-pedometer#readme", - "dependencies": {} + "homepage": "https://github.com/JWWon/react-native-universal-pedometer#readme", + "peerDependencies": { + "react-native": ">=0.40.0" + } } diff --git a/prettier.config.js b/prettier.config.js index d1f3948..840f0db 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,9 +1,7 @@ module.exports = { - tabWidth: 4, - singleQuote: true, - trailingComma: "none", - jsxBracketSameLine: true, - printWidth: 120, - bracketSpacing: false + tabWidth: 2, + singleQuote: true, + trailingComma: 'none', + jsxBracketSameLine: true, + printWidth: 120 }; - diff --git a/react-native-universal-pedometer.podspec b/react-native-universal-pedometer.podspec new file mode 100644 index 0000000..434e7b3 --- /dev/null +++ b/react-native-universal-pedometer.podspec @@ -0,0 +1,19 @@ +require 'json' + +package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) + +Pod::Spec.new do |s| + s.name = "react-native-universal-pedometer" + s.version = package['version'] + s.summary = package['description'] + s.license = package['license'] + + s.authors = package['author'] + s.homepage = package['homepage'] + s.platform = :ios, "9.0" + + s.source = { :git => "https://github.com/JWWon/react-native-universal-pedometer.git", :tag => "v#{s.version}" } + s.source_files = "ios/**/*.{h,m}" + + s.dependency 'React' +end