├── .gitignore ├── .swift-version ├── Cartfile ├── Cartfile.resolved ├── Examples ├── Cartfile ├── Cartfile.resolved ├── Podfile ├── Podfile.lock ├── RxCoreMotionCarthageExample.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── RxCoreMotionCocoapodsExample.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── RxCoreMotionCocoapodsExample.xcworkspace │ └── contents.xcworkspacedata └── RxCoreMotionExample │ ├── AppDelegate.swift │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-40.png │ │ ├── Icon-40@2x-1.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-60@2x-1.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x-1.png │ │ ├── Icon-Small@3x.png │ │ ├── Rx_Logo-iPad.png │ │ └── Rx_Logo_M.png │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ ├── ViewControllers │ ├── AccelerometerViewController.swift │ ├── DeviceMotionViewController.swift │ ├── GyroscopeViewController.swift │ └── MagnetometerViewController.swift │ └── Views │ ├── GrillageView.swift │ └── RedCircleView.swift ├── LICENSE ├── Pod ├── Assets │ └── .gitkeep └── Classes │ ├── MotionActivityManager.swift │ └── RxCoreMotion.swift ├── README.md ├── RxCoreMotion.podspec ├── RxCoreMotion.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ └── xcschemes │ └── RxCoreMotion.xcscheme └── RxCoreMotion ├── Info.plist └── RxCoreMotion.h /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcuserstate 22 | 23 | timeline.xctimeline 24 | 25 | # Bundler 26 | .bundle 27 | 28 | # CocoaPods 29 | # 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | Pods/ 35 | 36 | # Carthage 37 | # 38 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 39 | Carthage/Checkouts 40 | Carthage/Build 41 | 42 | # Swift Package Manager 43 | # 44 | .build/ 45 | Packages/ 46 | /Examples/Carthage 47 | -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 4.0 2 | -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" 2 | -------------------------------------------------------------------------------- /Cartfile.resolved: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" "3.3.1" 2 | -------------------------------------------------------------------------------- /Examples/Cartfile: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" 2 | github "RxSwiftCommunity/RxCoreMotion" 3 | -------------------------------------------------------------------------------- /Examples/Cartfile.resolved: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" "3.3.1" 2 | github "RxSwiftCommunity/RxCoreMotion" "1.1.1" 3 | -------------------------------------------------------------------------------- /Examples/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | project 'RxCoreMotionCocoapodsExample.xcodeproj' 3 | platform :ios, '8.0' 4 | 5 | target 'RxCoreMotionExample' do 6 | use_frameworks! 7 | 8 | pod 'RxSwift', '~> 4.0' 9 | pod 'RxCocoa', '~> 4.0' 10 | pod 'RxCoreMotion', :path => '../' 11 | end 12 | -------------------------------------------------------------------------------- /Examples/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - RxCocoa (4.0.0): 3 | - RxSwift (~> 4.0) 4 | - RxCoreMotion (1.3.0): 5 | - RxSwift (~> 4.0) 6 | - RxSwift (4.0.0) 7 | 8 | DEPENDENCIES: 9 | - RxCocoa (~> 4.0) 10 | - RxCoreMotion (from `../`) 11 | - RxSwift (~> 4.0) 12 | 13 | EXTERNAL SOURCES: 14 | RxCoreMotion: 15 | :path: ../ 16 | 17 | SPEC CHECKSUMS: 18 | RxCocoa: d62846ca96495d862fa4c59ea7d87e5031d7340e 19 | RxCoreMotion: abc7639c82dae7a6654fb6b6db378fc2d8f5f22e 20 | RxSwift: fd680d75283beb5e2559486f3c0ff852f0d35334 21 | 22 | PODFILE CHECKSUM: 1c20244579f5f8223318fd0a3b3a04c7f6d3ec32 23 | 24 | COCOAPODS: 1.3.1 25 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionCarthageExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 07D678D91E7F82500013F645 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678CA1E7F82500013F645 /* AppDelegate.swift */; }; 11 | 07D678DA1E7F82500013F645 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CB1E7F82500013F645 /* Assets.xcassets */; }; 12 | 07D678DB1E7F82500013F645 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */; }; 13 | 07D678DC1E7F82500013F645 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CE1E7F82500013F645 /* Main.storyboard */; }; 14 | 07D678DE1E7F82500013F645 /* AccelerometerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */; }; 15 | 07D678DF1E7F82500013F645 /* DeviceMotionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */; }; 16 | 07D678E01E7F82500013F645 /* GyroscopeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */; }; 17 | 07D678E11E7F82500013F645 /* MagnetometerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */; }; 18 | 07D678E21E7F82500013F645 /* GrillageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D71E7F82500013F645 /* GrillageView.swift */; }; 19 | 07D678E31E7F82500013F645 /* RedCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D81E7F82500013F645 /* RedCircleView.swift */; }; 20 | 07D678FD1E7FAAF40013F645 /* RxCoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07D678FB1E7FAAF40013F645 /* RxCoreMotion.framework */; }; 21 | 07D678FE1E7FAB2F0013F645 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07D678FA1E7FAAF40013F645 /* RxSwift.framework */; }; 22 | 07D678FF1E7FAB2F0013F645 /* RxSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 07D678FA1E7FAAF40013F645 /* RxSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 23 | 07D679021E7FAB330013F645 /* RxCoreMotion.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 07D678FB1E7FAAF40013F645 /* RxCoreMotion.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXCopyFilesBuildPhase section */ 27 | 07D679001E7FAB2F0013F645 /* Embed Frameworks */ = { 28 | isa = PBXCopyFilesBuildPhase; 29 | buildActionMask = 2147483647; 30 | dstPath = ""; 31 | dstSubfolderSpec = 10; 32 | files = ( 33 | 07D678FF1E7FAB2F0013F645 /* RxSwift.framework in Embed Frameworks */, 34 | 07D679021E7FAB330013F645 /* RxCoreMotion.framework in Embed Frameworks */, 35 | ); 36 | name = "Embed Frameworks"; 37 | runOnlyForDeploymentPostprocessing = 0; 38 | }; 39 | /* End PBXCopyFilesBuildPhase section */ 40 | 41 | /* Begin PBXFileReference section */ 42 | 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RxCoreMotionExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | 07D678CA1E7F82500013F645 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 44 | 07D678CB1E7F82500013F645 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 45 | 07D678CD1E7F82500013F645 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 46 | 07D678CF1E7F82500013F645 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 47 | 07D678D01E7F82500013F645 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 48 | 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccelerometerViewController.swift; sourceTree = ""; }; 49 | 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceMotionViewController.swift; sourceTree = ""; }; 50 | 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GyroscopeViewController.swift; sourceTree = ""; }; 51 | 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MagnetometerViewController.swift; sourceTree = ""; }; 52 | 07D678D71E7F82500013F645 /* GrillageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GrillageView.swift; sourceTree = ""; }; 53 | 07D678D81E7F82500013F645 /* RedCircleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RedCircleView.swift; sourceTree = ""; }; 54 | 07D678FA1E7FAAF40013F645 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = ""; }; 55 | 07D678FB1E7FAAF40013F645 /* RxCoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCoreMotion.framework; path = Carthage/Build/iOS/RxCoreMotion.framework; sourceTree = ""; }; 56 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; 57 | 667B13091E7BCE28001151C7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 071AD5A51CF171850058C7ED /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 07D678FD1E7FAAF40013F645 /* RxCoreMotion.framework in Frameworks */, 66 | 07D678FE1E7FAB2F0013F645 /* RxSwift.framework in Frameworks */, 67 | ); 68 | runOnlyForDeploymentPostprocessing = 0; 69 | }; 70 | /* End PBXFrameworksBuildPhase section */ 71 | 72 | /* Begin PBXGroup section */ 73 | 071AD59F1CF171850058C7ED = { 74 | isa = PBXGroup; 75 | children = ( 76 | 07D678C91E7F82500013F645 /* RxCoreMotionExample */, 77 | 071AD5A91CF171850058C7ED /* Products */, 78 | 788EF9CBABF5068261AC6651 /* Frameworks */, 79 | ); 80 | sourceTree = ""; 81 | }; 82 | 071AD5A91CF171850058C7ED /* Products */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */, 86 | ); 87 | name = Products; 88 | sourceTree = ""; 89 | }; 90 | 07D678C91E7F82500013F645 /* RxCoreMotionExample */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | 07D678CA1E7F82500013F645 /* AppDelegate.swift */, 94 | 07D678D11E7F82500013F645 /* ViewControllers */, 95 | 07D678D61E7F82500013F645 /* Views */, 96 | 07D678CB1E7F82500013F645 /* Assets.xcassets */, 97 | 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */, 98 | 07D678CE1E7F82500013F645 /* Main.storyboard */, 99 | 07D678D01E7F82500013F645 /* Info.plist */, 100 | ); 101 | path = RxCoreMotionExample; 102 | sourceTree = ""; 103 | }; 104 | 07D678D11E7F82500013F645 /* ViewControllers */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */, 108 | 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */, 109 | 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */, 110 | 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */, 111 | ); 112 | path = ViewControllers; 113 | sourceTree = ""; 114 | }; 115 | 07D678D61E7F82500013F645 /* Views */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | 07D678D71E7F82500013F645 /* GrillageView.swift */, 119 | 07D678D81E7F82500013F645 /* RedCircleView.swift */, 120 | ); 121 | path = Views; 122 | sourceTree = ""; 123 | }; 124 | 788EF9CBABF5068261AC6651 /* Frameworks */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 07D678FA1E7FAAF40013F645 /* RxSwift.framework */, 128 | 07D678FB1E7FAAF40013F645 /* RxCoreMotion.framework */, 129 | 667B13091E7BCE28001151C7 /* Foundation.framework */, 130 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */, 131 | ); 132 | name = Frameworks; 133 | sourceTree = ""; 134 | }; 135 | /* End PBXGroup section */ 136 | 137 | /* Begin PBXNativeTarget section */ 138 | 071AD5A71CF171850058C7ED /* RxCoreMotionExample */ = { 139 | isa = PBXNativeTarget; 140 | buildConfigurationList = 071AD5BA1CF171850058C7ED /* Build configuration list for PBXNativeTarget "RxCoreMotionExample" */; 141 | buildPhases = ( 142 | 071AD5A41CF171850058C7ED /* Sources */, 143 | 071AD5A51CF171850058C7ED /* Frameworks */, 144 | 071AD5A61CF171850058C7ED /* Resources */, 145 | 07D679001E7FAB2F0013F645 /* Embed Frameworks */, 146 | ); 147 | buildRules = ( 148 | ); 149 | dependencies = ( 150 | ); 151 | name = RxCoreMotionExample; 152 | productName = RxCoreMotion_Example; 153 | productReference = 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */; 154 | productType = "com.apple.product-type.application"; 155 | }; 156 | /* End PBXNativeTarget section */ 157 | 158 | /* Begin PBXProject section */ 159 | 071AD5A01CF171850058C7ED /* Project object */ = { 160 | isa = PBXProject; 161 | attributes = { 162 | LastSwiftUpdateCheck = 0730; 163 | LastUpgradeCheck = 0800; 164 | ORGANIZATIONNAME = "RxSwiftCommunity - https://github.com/RxSwiftCommunity"; 165 | TargetAttributes = { 166 | 071AD5A71CF171850058C7ED = { 167 | CreatedOnToolsVersion = 7.3.1; 168 | DevelopmentTeam = 2V65Z4JB29; 169 | LastSwiftMigration = 0800; 170 | }; 171 | }; 172 | }; 173 | buildConfigurationList = 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotionCarthageExample" */; 174 | compatibilityVersion = "Xcode 3.2"; 175 | developmentRegion = English; 176 | hasScannedForEncodings = 0; 177 | knownRegions = ( 178 | en, 179 | Base, 180 | ); 181 | mainGroup = 071AD59F1CF171850058C7ED; 182 | productRefGroup = 071AD5A91CF171850058C7ED /* Products */; 183 | projectDirPath = ""; 184 | projectRoot = ""; 185 | targets = ( 186 | 071AD5A71CF171850058C7ED /* RxCoreMotionExample */, 187 | ); 188 | }; 189 | /* End PBXProject section */ 190 | 191 | /* Begin PBXResourcesBuildPhase section */ 192 | 071AD5A61CF171850058C7ED /* Resources */ = { 193 | isa = PBXResourcesBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | 07D678DC1E7F82500013F645 /* Main.storyboard in Resources */, 197 | 07D678DB1E7F82500013F645 /* LaunchScreen.storyboard in Resources */, 198 | 07D678DA1E7F82500013F645 /* Assets.xcassets in Resources */, 199 | ); 200 | runOnlyForDeploymentPostprocessing = 0; 201 | }; 202 | /* End PBXResourcesBuildPhase section */ 203 | 204 | /* Begin PBXSourcesBuildPhase section */ 205 | 071AD5A41CF171850058C7ED /* Sources */ = { 206 | isa = PBXSourcesBuildPhase; 207 | buildActionMask = 2147483647; 208 | files = ( 209 | 07D678D91E7F82500013F645 /* AppDelegate.swift in Sources */, 210 | 07D678E11E7F82500013F645 /* MagnetometerViewController.swift in Sources */, 211 | 07D678E21E7F82500013F645 /* GrillageView.swift in Sources */, 212 | 07D678E31E7F82500013F645 /* RedCircleView.swift in Sources */, 213 | 07D678DF1E7F82500013F645 /* DeviceMotionViewController.swift in Sources */, 214 | 07D678E01E7F82500013F645 /* GyroscopeViewController.swift in Sources */, 215 | 07D678DE1E7F82500013F645 /* AccelerometerViewController.swift in Sources */, 216 | ); 217 | runOnlyForDeploymentPostprocessing = 0; 218 | }; 219 | /* End PBXSourcesBuildPhase section */ 220 | 221 | /* Begin PBXVariantGroup section */ 222 | 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */ = { 223 | isa = PBXVariantGroup; 224 | children = ( 225 | 07D678CD1E7F82500013F645 /* Base */, 226 | ); 227 | name = LaunchScreen.storyboard; 228 | sourceTree = ""; 229 | }; 230 | 07D678CE1E7F82500013F645 /* Main.storyboard */ = { 231 | isa = PBXVariantGroup; 232 | children = ( 233 | 07D678CF1E7F82500013F645 /* Base */, 234 | ); 235 | name = Main.storyboard; 236 | sourceTree = ""; 237 | }; 238 | /* End PBXVariantGroup section */ 239 | 240 | /* Begin XCBuildConfiguration section */ 241 | 071AD5B81CF171850058C7ED /* Debug */ = { 242 | isa = XCBuildConfiguration; 243 | buildSettings = { 244 | ALWAYS_SEARCH_USER_PATHS = NO; 245 | CLANG_ANALYZER_NONNULL = YES; 246 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 247 | CLANG_CXX_LIBRARY = "libc++"; 248 | CLANG_ENABLE_MODULES = YES; 249 | CLANG_ENABLE_OBJC_ARC = YES; 250 | CLANG_WARN_BOOL_CONVERSION = YES; 251 | CLANG_WARN_CONSTANT_CONVERSION = YES; 252 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 253 | CLANG_WARN_EMPTY_BODY = YES; 254 | CLANG_WARN_ENUM_CONVERSION = YES; 255 | CLANG_WARN_INFINITE_RECURSION = YES; 256 | CLANG_WARN_INT_CONVERSION = YES; 257 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 258 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 259 | CLANG_WARN_UNREACHABLE_CODE = YES; 260 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 261 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 262 | COPY_PHASE_STRIP = NO; 263 | DEBUG_INFORMATION_FORMAT = dwarf; 264 | ENABLE_STRICT_OBJC_MSGSEND = YES; 265 | ENABLE_TESTABILITY = YES; 266 | GCC_C_LANGUAGE_STANDARD = gnu99; 267 | GCC_DYNAMIC_NO_PIC = NO; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_OPTIMIZATION_LEVEL = 0; 270 | GCC_PREPROCESSOR_DEFINITIONS = ( 271 | "DEBUG=1", 272 | "$(inherited)", 273 | ); 274 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 275 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 276 | GCC_WARN_UNDECLARED_SELECTOR = YES; 277 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 278 | GCC_WARN_UNUSED_FUNCTION = YES; 279 | GCC_WARN_UNUSED_VARIABLE = YES; 280 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 281 | MTL_ENABLE_DEBUG_INFO = YES; 282 | ONLY_ACTIVE_ARCH = YES; 283 | SDKROOT = iphoneos; 284 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 285 | SWIFT_VERSION = 3.0; 286 | }; 287 | name = Debug; 288 | }; 289 | 071AD5B91CF171850058C7ED /* Release */ = { 290 | isa = XCBuildConfiguration; 291 | buildSettings = { 292 | ALWAYS_SEARCH_USER_PATHS = NO; 293 | CLANG_ANALYZER_NONNULL = YES; 294 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 295 | CLANG_CXX_LIBRARY = "libc++"; 296 | CLANG_ENABLE_MODULES = YES; 297 | CLANG_ENABLE_OBJC_ARC = YES; 298 | CLANG_WARN_BOOL_CONVERSION = YES; 299 | CLANG_WARN_CONSTANT_CONVERSION = YES; 300 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 301 | CLANG_WARN_EMPTY_BODY = YES; 302 | CLANG_WARN_ENUM_CONVERSION = YES; 303 | CLANG_WARN_INFINITE_RECURSION = YES; 304 | CLANG_WARN_INT_CONVERSION = YES; 305 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 306 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 307 | CLANG_WARN_UNREACHABLE_CODE = YES; 308 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 309 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 310 | COPY_PHASE_STRIP = NO; 311 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 312 | ENABLE_NS_ASSERTIONS = NO; 313 | ENABLE_STRICT_OBJC_MSGSEND = YES; 314 | GCC_C_LANGUAGE_STANDARD = gnu99; 315 | GCC_NO_COMMON_BLOCKS = YES; 316 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 317 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 318 | GCC_WARN_UNDECLARED_SELECTOR = YES; 319 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 320 | GCC_WARN_UNUSED_FUNCTION = YES; 321 | GCC_WARN_UNUSED_VARIABLE = YES; 322 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 323 | MTL_ENABLE_DEBUG_INFO = NO; 324 | SDKROOT = iphoneos; 325 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 326 | SWIFT_VERSION = 3.0; 327 | VALIDATE_PRODUCT = YES; 328 | }; 329 | name = Release; 330 | }; 331 | 071AD5BB1CF171850058C7ED /* Debug */ = { 332 | isa = XCBuildConfiguration; 333 | buildSettings = { 334 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; 335 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 336 | DEVELOPMENT_TEAM = 2V65Z4JB29; 337 | FRAMEWORK_SEARCH_PATHS = ( 338 | "$(inherited)", 339 | "$(PROJECT_DIR)/Carthage/Build/iOS", 340 | ); 341 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotionExample/Info.plist"; 342 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 343 | PRODUCT_BUNDLE_IDENTIFIER = "rx.swift.RxCoreMotion-Example"; 344 | PRODUCT_NAME = "$(TARGET_NAME)"; 345 | SWIFT_VERSION = 3.0; 346 | }; 347 | name = Debug; 348 | }; 349 | 071AD5BC1CF171850058C7ED /* Release */ = { 350 | isa = XCBuildConfiguration; 351 | buildSettings = { 352 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; 353 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 354 | DEVELOPMENT_TEAM = 2V65Z4JB29; 355 | FRAMEWORK_SEARCH_PATHS = ( 356 | "$(inherited)", 357 | "$(PROJECT_DIR)/Carthage/Build/iOS", 358 | ); 359 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotionExample/Info.plist"; 360 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 361 | PRODUCT_BUNDLE_IDENTIFIER = "rx.swift.RxCoreMotion-Example"; 362 | PRODUCT_NAME = "$(TARGET_NAME)"; 363 | SWIFT_VERSION = 3.0; 364 | }; 365 | name = Release; 366 | }; 367 | /* End XCBuildConfiguration section */ 368 | 369 | /* Begin XCConfigurationList section */ 370 | 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotionCarthageExample" */ = { 371 | isa = XCConfigurationList; 372 | buildConfigurations = ( 373 | 071AD5B81CF171850058C7ED /* Debug */, 374 | 071AD5B91CF171850058C7ED /* Release */, 375 | ); 376 | defaultConfigurationIsVisible = 0; 377 | defaultConfigurationName = Release; 378 | }; 379 | 071AD5BA1CF171850058C7ED /* Build configuration list for PBXNativeTarget "RxCoreMotionExample" */ = { 380 | isa = XCConfigurationList; 381 | buildConfigurations = ( 382 | 071AD5BB1CF171850058C7ED /* Debug */, 383 | 071AD5BC1CF171850058C7ED /* Release */, 384 | ); 385 | defaultConfigurationIsVisible = 0; 386 | defaultConfigurationName = Release; 387 | }; 388 | /* End XCConfigurationList section */ 389 | }; 390 | rootObject = 071AD5A01CF171850058C7ED /* Project object */; 391 | } 392 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionCarthageExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionCocoapodsExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 07D678D91E7F82500013F645 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678CA1E7F82500013F645 /* AppDelegate.swift */; }; 11 | 07D678DA1E7F82500013F645 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CB1E7F82500013F645 /* Assets.xcassets */; }; 12 | 07D678DB1E7F82500013F645 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */; }; 13 | 07D678DC1E7F82500013F645 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 07D678CE1E7F82500013F645 /* Main.storyboard */; }; 14 | 07D678DE1E7F82500013F645 /* AccelerometerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */; }; 15 | 07D678DF1E7F82500013F645 /* DeviceMotionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */; }; 16 | 07D678E01E7F82500013F645 /* GyroscopeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */; }; 17 | 07D678E11E7F82500013F645 /* MagnetometerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */; }; 18 | 07D678E21E7F82500013F645 /* GrillageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D71E7F82500013F645 /* GrillageView.swift */; }; 19 | 07D678E31E7F82500013F645 /* RedCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678D81E7F82500013F645 /* RedCircleView.swift */; }; 20 | B44E6D7034A63D5E7A1F58F6 /* Pods_RxCoreMotionExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BC0E319DBFCE0C518DF4F9F /* Pods_RxCoreMotionExample.framework */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RxCoreMotionExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 25 | 07D678CA1E7F82500013F645 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 26 | 07D678CB1E7F82500013F645 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 27 | 07D678CD1E7F82500013F645 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 28 | 07D678CF1E7F82500013F645 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 29 | 07D678D01E7F82500013F645 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 30 | 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccelerometerViewController.swift; sourceTree = ""; }; 31 | 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceMotionViewController.swift; sourceTree = ""; }; 32 | 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GyroscopeViewController.swift; sourceTree = ""; }; 33 | 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MagnetometerViewController.swift; sourceTree = ""; }; 34 | 07D678D71E7F82500013F645 /* GrillageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GrillageView.swift; sourceTree = ""; }; 35 | 07D678D81E7F82500013F645 /* RedCircleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RedCircleView.swift; sourceTree = ""; }; 36 | 6090CC3F0686465698C358CD /* Pods-RxCoreMotionExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxCoreMotionExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RxCoreMotionExample/Pods-RxCoreMotionExample.debug.xcconfig"; sourceTree = ""; }; 37 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; 38 | 667B13091E7BCE28001151C7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 39 | 7BC0E319DBFCE0C518DF4F9F /* Pods_RxCoreMotionExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RxCoreMotionExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 9C1F20705DFF52A3EB73E67C /* Pods-RxCoreMotionExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxCoreMotionExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-RxCoreMotionExample/Pods-RxCoreMotionExample.release.xcconfig"; sourceTree = ""; }; 41 | /* End PBXFileReference section */ 42 | 43 | /* Begin PBXFrameworksBuildPhase section */ 44 | 071AD5A51CF171850058C7ED /* Frameworks */ = { 45 | isa = PBXFrameworksBuildPhase; 46 | buildActionMask = 2147483647; 47 | files = ( 48 | B44E6D7034A63D5E7A1F58F6 /* Pods_RxCoreMotionExample.framework in Frameworks */, 49 | ); 50 | runOnlyForDeploymentPostprocessing = 0; 51 | }; 52 | /* End PBXFrameworksBuildPhase section */ 53 | 54 | /* Begin PBXGroup section */ 55 | 071AD59F1CF171850058C7ED = { 56 | isa = PBXGroup; 57 | children = ( 58 | 07D678C91E7F82500013F645 /* RxCoreMotionExample */, 59 | 071AD5A91CF171850058C7ED /* Products */, 60 | 788EF9CBABF5068261AC6651 /* Frameworks */, 61 | E755FB66B8C8720CC9FB58BF /* Pods */, 62 | ); 63 | sourceTree = ""; 64 | }; 65 | 071AD5A91CF171850058C7ED /* Products */ = { 66 | isa = PBXGroup; 67 | children = ( 68 | 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */, 69 | ); 70 | name = Products; 71 | sourceTree = ""; 72 | }; 73 | 07D678C91E7F82500013F645 /* RxCoreMotionExample */ = { 74 | isa = PBXGroup; 75 | children = ( 76 | 07D678CA1E7F82500013F645 /* AppDelegate.swift */, 77 | 07D678D11E7F82500013F645 /* ViewControllers */, 78 | 07D678D61E7F82500013F645 /* Views */, 79 | 07D678CB1E7F82500013F645 /* Assets.xcassets */, 80 | 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */, 81 | 07D678CE1E7F82500013F645 /* Main.storyboard */, 82 | 07D678D01E7F82500013F645 /* Info.plist */, 83 | ); 84 | path = RxCoreMotionExample; 85 | sourceTree = ""; 86 | }; 87 | 07D678D11E7F82500013F645 /* ViewControllers */ = { 88 | isa = PBXGroup; 89 | children = ( 90 | 07D678D21E7F82500013F645 /* AccelerometerViewController.swift */, 91 | 07D678D31E7F82500013F645 /* DeviceMotionViewController.swift */, 92 | 07D678D41E7F82500013F645 /* GyroscopeViewController.swift */, 93 | 07D678D51E7F82500013F645 /* MagnetometerViewController.swift */, 94 | ); 95 | path = ViewControllers; 96 | sourceTree = ""; 97 | }; 98 | 07D678D61E7F82500013F645 /* Views */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 07D678D71E7F82500013F645 /* GrillageView.swift */, 102 | 07D678D81E7F82500013F645 /* RedCircleView.swift */, 103 | ); 104 | path = Views; 105 | sourceTree = ""; 106 | }; 107 | 788EF9CBABF5068261AC6651 /* Frameworks */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 667B13091E7BCE28001151C7 /* Foundation.framework */, 111 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */, 112 | 7BC0E319DBFCE0C518DF4F9F /* Pods_RxCoreMotionExample.framework */, 113 | ); 114 | name = Frameworks; 115 | sourceTree = ""; 116 | }; 117 | E755FB66B8C8720CC9FB58BF /* Pods */ = { 118 | isa = PBXGroup; 119 | children = ( 120 | 6090CC3F0686465698C358CD /* Pods-RxCoreMotionExample.debug.xcconfig */, 121 | 9C1F20705DFF52A3EB73E67C /* Pods-RxCoreMotionExample.release.xcconfig */, 122 | ); 123 | name = Pods; 124 | sourceTree = ""; 125 | }; 126 | /* End PBXGroup section */ 127 | 128 | /* Begin PBXNativeTarget section */ 129 | 071AD5A71CF171850058C7ED /* RxCoreMotionExample */ = { 130 | isa = PBXNativeTarget; 131 | buildConfigurationList = 071AD5BA1CF171850058C7ED /* Build configuration list for PBXNativeTarget "RxCoreMotionExample" */; 132 | buildPhases = ( 133 | D94C429B3822B11B00528827 /* [CP] Check Pods Manifest.lock */, 134 | 071AD5A41CF171850058C7ED /* Sources */, 135 | 071AD5A51CF171850058C7ED /* Frameworks */, 136 | 071AD5A61CF171850058C7ED /* Resources */, 137 | 656345A9AA28B7371CBD0109 /* [CP] Embed Pods Frameworks */, 138 | D2FFF0E3C32D1D92056D8A90 /* [CP] Copy Pods Resources */, 139 | ); 140 | buildRules = ( 141 | ); 142 | dependencies = ( 143 | ); 144 | name = RxCoreMotionExample; 145 | productName = RxCoreMotion_Example; 146 | productReference = 071AD5A81CF171850058C7ED /* RxCoreMotionExample.app */; 147 | productType = "com.apple.product-type.application"; 148 | }; 149 | /* End PBXNativeTarget section */ 150 | 151 | /* Begin PBXProject section */ 152 | 071AD5A01CF171850058C7ED /* Project object */ = { 153 | isa = PBXProject; 154 | attributes = { 155 | LastSwiftUpdateCheck = 0730; 156 | LastUpgradeCheck = 0910; 157 | ORGANIZATIONNAME = "RxSwiftCommunity - https://github.com/RxSwiftCommunity"; 158 | TargetAttributes = { 159 | 071AD5A71CF171850058C7ED = { 160 | CreatedOnToolsVersion = 7.3.1; 161 | DevelopmentTeam = 2V65Z4JB29; 162 | LastSwiftMigration = 0800; 163 | }; 164 | }; 165 | }; 166 | buildConfigurationList = 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotionCocoapodsExample" */; 167 | compatibilityVersion = "Xcode 3.2"; 168 | developmentRegion = English; 169 | hasScannedForEncodings = 0; 170 | knownRegions = ( 171 | en, 172 | Base, 173 | ); 174 | mainGroup = 071AD59F1CF171850058C7ED; 175 | productRefGroup = 071AD5A91CF171850058C7ED /* Products */; 176 | projectDirPath = ""; 177 | projectRoot = ""; 178 | targets = ( 179 | 071AD5A71CF171850058C7ED /* RxCoreMotionExample */, 180 | ); 181 | }; 182 | /* End PBXProject section */ 183 | 184 | /* Begin PBXResourcesBuildPhase section */ 185 | 071AD5A61CF171850058C7ED /* Resources */ = { 186 | isa = PBXResourcesBuildPhase; 187 | buildActionMask = 2147483647; 188 | files = ( 189 | 07D678DC1E7F82500013F645 /* Main.storyboard in Resources */, 190 | 07D678DB1E7F82500013F645 /* LaunchScreen.storyboard in Resources */, 191 | 07D678DA1E7F82500013F645 /* Assets.xcassets in Resources */, 192 | ); 193 | runOnlyForDeploymentPostprocessing = 0; 194 | }; 195 | /* End PBXResourcesBuildPhase section */ 196 | 197 | /* Begin PBXShellScriptBuildPhase section */ 198 | 656345A9AA28B7371CBD0109 /* [CP] Embed Pods Frameworks */ = { 199 | isa = PBXShellScriptBuildPhase; 200 | buildActionMask = 2147483647; 201 | files = ( 202 | ); 203 | inputPaths = ( 204 | "${SRCROOT}/Pods/Target Support Files/Pods-RxCoreMotionExample/Pods-RxCoreMotionExample-frameworks.sh", 205 | "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework", 206 | "${BUILT_PRODUCTS_DIR}/RxCoreMotion/RxCoreMotion.framework", 207 | "${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework", 208 | ); 209 | name = "[CP] Embed Pods Frameworks"; 210 | outputPaths = ( 211 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework", 212 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCoreMotion.framework", 213 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework", 214 | ); 215 | runOnlyForDeploymentPostprocessing = 0; 216 | shellPath = /bin/sh; 217 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RxCoreMotionExample/Pods-RxCoreMotionExample-frameworks.sh\"\n"; 218 | showEnvVarsInLog = 0; 219 | }; 220 | D2FFF0E3C32D1D92056D8A90 /* [CP] Copy Pods Resources */ = { 221 | isa = PBXShellScriptBuildPhase; 222 | buildActionMask = 2147483647; 223 | files = ( 224 | ); 225 | inputPaths = ( 226 | ); 227 | name = "[CP] Copy Pods Resources"; 228 | outputPaths = ( 229 | ); 230 | runOnlyForDeploymentPostprocessing = 0; 231 | shellPath = /bin/sh; 232 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RxCoreMotionExample/Pods-RxCoreMotionExample-resources.sh\"\n"; 233 | showEnvVarsInLog = 0; 234 | }; 235 | D94C429B3822B11B00528827 /* [CP] Check Pods Manifest.lock */ = { 236 | isa = PBXShellScriptBuildPhase; 237 | buildActionMask = 2147483647; 238 | files = ( 239 | ); 240 | inputPaths = ( 241 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 242 | "${PODS_ROOT}/Manifest.lock", 243 | ); 244 | name = "[CP] Check Pods Manifest.lock"; 245 | outputPaths = ( 246 | "$(DERIVED_FILE_DIR)/Pods-RxCoreMotionExample-checkManifestLockResult.txt", 247 | ); 248 | runOnlyForDeploymentPostprocessing = 0; 249 | shellPath = /bin/sh; 250 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 251 | showEnvVarsInLog = 0; 252 | }; 253 | /* End PBXShellScriptBuildPhase section */ 254 | 255 | /* Begin PBXSourcesBuildPhase section */ 256 | 071AD5A41CF171850058C7ED /* Sources */ = { 257 | isa = PBXSourcesBuildPhase; 258 | buildActionMask = 2147483647; 259 | files = ( 260 | 07D678D91E7F82500013F645 /* AppDelegate.swift in Sources */, 261 | 07D678E11E7F82500013F645 /* MagnetometerViewController.swift in Sources */, 262 | 07D678E21E7F82500013F645 /* GrillageView.swift in Sources */, 263 | 07D678E31E7F82500013F645 /* RedCircleView.swift in Sources */, 264 | 07D678DF1E7F82500013F645 /* DeviceMotionViewController.swift in Sources */, 265 | 07D678E01E7F82500013F645 /* GyroscopeViewController.swift in Sources */, 266 | 07D678DE1E7F82500013F645 /* AccelerometerViewController.swift in Sources */, 267 | ); 268 | runOnlyForDeploymentPostprocessing = 0; 269 | }; 270 | /* End PBXSourcesBuildPhase section */ 271 | 272 | /* Begin PBXVariantGroup section */ 273 | 07D678CC1E7F82500013F645 /* LaunchScreen.storyboard */ = { 274 | isa = PBXVariantGroup; 275 | children = ( 276 | 07D678CD1E7F82500013F645 /* Base */, 277 | ); 278 | name = LaunchScreen.storyboard; 279 | sourceTree = ""; 280 | }; 281 | 07D678CE1E7F82500013F645 /* Main.storyboard */ = { 282 | isa = PBXVariantGroup; 283 | children = ( 284 | 07D678CF1E7F82500013F645 /* Base */, 285 | ); 286 | name = Main.storyboard; 287 | sourceTree = ""; 288 | }; 289 | /* End PBXVariantGroup section */ 290 | 291 | /* Begin XCBuildConfiguration section */ 292 | 071AD5B81CF171850058C7ED /* Debug */ = { 293 | isa = XCBuildConfiguration; 294 | buildSettings = { 295 | ALWAYS_SEARCH_USER_PATHS = NO; 296 | CLANG_ANALYZER_NONNULL = YES; 297 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 298 | CLANG_CXX_LIBRARY = "libc++"; 299 | CLANG_ENABLE_MODULES = YES; 300 | CLANG_ENABLE_OBJC_ARC = YES; 301 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 302 | CLANG_WARN_BOOL_CONVERSION = YES; 303 | CLANG_WARN_COMMA = YES; 304 | CLANG_WARN_CONSTANT_CONVERSION = YES; 305 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 306 | CLANG_WARN_EMPTY_BODY = YES; 307 | CLANG_WARN_ENUM_CONVERSION = YES; 308 | CLANG_WARN_INFINITE_RECURSION = YES; 309 | CLANG_WARN_INT_CONVERSION = YES; 310 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 311 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 312 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 313 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 314 | CLANG_WARN_STRICT_PROTOTYPES = YES; 315 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 316 | CLANG_WARN_UNREACHABLE_CODE = YES; 317 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 318 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 319 | COPY_PHASE_STRIP = NO; 320 | DEBUG_INFORMATION_FORMAT = dwarf; 321 | ENABLE_STRICT_OBJC_MSGSEND = YES; 322 | ENABLE_TESTABILITY = YES; 323 | GCC_C_LANGUAGE_STANDARD = gnu99; 324 | GCC_DYNAMIC_NO_PIC = NO; 325 | GCC_NO_COMMON_BLOCKS = YES; 326 | GCC_OPTIMIZATION_LEVEL = 0; 327 | GCC_PREPROCESSOR_DEFINITIONS = ( 328 | "DEBUG=1", 329 | "$(inherited)", 330 | ); 331 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 332 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 333 | GCC_WARN_UNDECLARED_SELECTOR = YES; 334 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 335 | GCC_WARN_UNUSED_FUNCTION = YES; 336 | GCC_WARN_UNUSED_VARIABLE = YES; 337 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 338 | MTL_ENABLE_DEBUG_INFO = YES; 339 | ONLY_ACTIVE_ARCH = YES; 340 | SDKROOT = iphoneos; 341 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 342 | SWIFT_VERSION = 4.0; 343 | }; 344 | name = Debug; 345 | }; 346 | 071AD5B91CF171850058C7ED /* Release */ = { 347 | isa = XCBuildConfiguration; 348 | buildSettings = { 349 | ALWAYS_SEARCH_USER_PATHS = NO; 350 | CLANG_ANALYZER_NONNULL = YES; 351 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 352 | CLANG_CXX_LIBRARY = "libc++"; 353 | CLANG_ENABLE_MODULES = YES; 354 | CLANG_ENABLE_OBJC_ARC = YES; 355 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 356 | CLANG_WARN_BOOL_CONVERSION = YES; 357 | CLANG_WARN_COMMA = YES; 358 | CLANG_WARN_CONSTANT_CONVERSION = YES; 359 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 360 | CLANG_WARN_EMPTY_BODY = YES; 361 | CLANG_WARN_ENUM_CONVERSION = YES; 362 | CLANG_WARN_INFINITE_RECURSION = YES; 363 | CLANG_WARN_INT_CONVERSION = YES; 364 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 365 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 366 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 367 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 368 | CLANG_WARN_STRICT_PROTOTYPES = YES; 369 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 370 | CLANG_WARN_UNREACHABLE_CODE = YES; 371 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 372 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 373 | COPY_PHASE_STRIP = NO; 374 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 375 | ENABLE_NS_ASSERTIONS = NO; 376 | ENABLE_STRICT_OBJC_MSGSEND = YES; 377 | GCC_C_LANGUAGE_STANDARD = gnu99; 378 | GCC_NO_COMMON_BLOCKS = YES; 379 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 380 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 381 | GCC_WARN_UNDECLARED_SELECTOR = YES; 382 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 383 | GCC_WARN_UNUSED_FUNCTION = YES; 384 | GCC_WARN_UNUSED_VARIABLE = YES; 385 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 386 | MTL_ENABLE_DEBUG_INFO = NO; 387 | SDKROOT = iphoneos; 388 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 389 | SWIFT_VERSION = 4.0; 390 | VALIDATE_PRODUCT = YES; 391 | }; 392 | name = Release; 393 | }; 394 | 071AD5BB1CF171850058C7ED /* Debug */ = { 395 | isa = XCBuildConfiguration; 396 | baseConfigurationReference = 6090CC3F0686465698C358CD /* Pods-RxCoreMotionExample.debug.xcconfig */; 397 | buildSettings = { 398 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; 399 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 400 | DEVELOPMENT_TEAM = 2V65Z4JB29; 401 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotionExample/Info.plist"; 402 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 403 | PRODUCT_BUNDLE_IDENTIFIER = "rx.swift.RxCoreMotion-Example"; 404 | PRODUCT_NAME = "$(TARGET_NAME)"; 405 | TARGETED_DEVICE_FAMILY = 1; 406 | }; 407 | name = Debug; 408 | }; 409 | 071AD5BC1CF171850058C7ED /* Release */ = { 410 | isa = XCBuildConfiguration; 411 | baseConfigurationReference = 9C1F20705DFF52A3EB73E67C /* Pods-RxCoreMotionExample.release.xcconfig */; 412 | buildSettings = { 413 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; 414 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 415 | DEVELOPMENT_TEAM = 2V65Z4JB29; 416 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotionExample/Info.plist"; 417 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 418 | PRODUCT_BUNDLE_IDENTIFIER = "rx.swift.RxCoreMotion-Example"; 419 | PRODUCT_NAME = "$(TARGET_NAME)"; 420 | TARGETED_DEVICE_FAMILY = 1; 421 | }; 422 | name = Release; 423 | }; 424 | /* End XCBuildConfiguration section */ 425 | 426 | /* Begin XCConfigurationList section */ 427 | 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotionCocoapodsExample" */ = { 428 | isa = XCConfigurationList; 429 | buildConfigurations = ( 430 | 071AD5B81CF171850058C7ED /* Debug */, 431 | 071AD5B91CF171850058C7ED /* Release */, 432 | ); 433 | defaultConfigurationIsVisible = 0; 434 | defaultConfigurationName = Release; 435 | }; 436 | 071AD5BA1CF171850058C7ED /* Build configuration list for PBXNativeTarget "RxCoreMotionExample" */ = { 437 | isa = XCConfigurationList; 438 | buildConfigurations = ( 439 | 071AD5BB1CF171850058C7ED /* Debug */, 440 | 071AD5BC1CF171850058C7ED /* Release */, 441 | ); 442 | defaultConfigurationIsVisible = 0; 443 | defaultConfigurationName = Release; 444 | }; 445 | /* End XCConfigurationList section */ 446 | }; 447 | rootObject = 071AD5A01CF171850058C7ED /* Project object */; 448 | } 449 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionCocoapodsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionCocoapodsExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 22/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "size" : "29x29", 25 | "idiom" : "iphone", 26 | "filename" : "Icon-Small@3x.png", 27 | "scale" : "3x" 28 | }, 29 | { 30 | "size" : "40x40", 31 | "idiom" : "iphone", 32 | "filename" : "Icon-40@2x.png", 33 | "scale" : "2x" 34 | }, 35 | { 36 | "size" : "40x40", 37 | "idiom" : "iphone", 38 | "filename" : "Icon-60@2x.png", 39 | "scale" : "3x" 40 | }, 41 | { 42 | "idiom" : "iphone", 43 | "size" : "57x57", 44 | "scale" : "1x" 45 | }, 46 | { 47 | "idiom" : "iphone", 48 | "size" : "57x57", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-60@2x-1.png", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "size" : "60x60", 59 | "idiom" : "iphone", 60 | "filename" : "Icon-60@3x.png", 61 | "scale" : "3x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "20x20", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "20x20", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "size" : "29x29", 75 | "idiom" : "ipad", 76 | "filename" : "Icon-Small.png", 77 | "scale" : "1x" 78 | }, 79 | { 80 | "idiom" : "ipad", 81 | "size" : "29x29", 82 | "scale" : "2x" 83 | }, 84 | { 85 | "size" : "40x40", 86 | "idiom" : "ipad", 87 | "filename" : "Icon-40.png", 88 | "scale" : "1x" 89 | }, 90 | { 91 | "size" : "40x40", 92 | "idiom" : "ipad", 93 | "filename" : "Icon-40@2x-1.png", 94 | "scale" : "2x" 95 | }, 96 | { 97 | "idiom" : "ipad", 98 | "size" : "50x50", 99 | "scale" : "1x" 100 | }, 101 | { 102 | "idiom" : "ipad", 103 | "size" : "50x50", 104 | "scale" : "2x" 105 | }, 106 | { 107 | "idiom" : "ipad", 108 | "size" : "72x72", 109 | "scale" : "1x" 110 | }, 111 | { 112 | "idiom" : "ipad", 113 | "size" : "72x72", 114 | "scale" : "2x" 115 | }, 116 | { 117 | "size" : "76x76", 118 | "idiom" : "ipad", 119 | "filename" : "Icon-76.png", 120 | "scale" : "1x" 121 | }, 122 | { 123 | "size" : "76x76", 124 | "idiom" : "ipad", 125 | "filename" : "Icon-76@2x.png", 126 | "scale" : "2x" 127 | }, 128 | { 129 | "size" : "83.5x83.5", 130 | "idiom" : "ipad", 131 | "filename" : "Rx_Logo-iPad.png", 132 | "scale" : "2x" 133 | }, 134 | { 135 | "size" : "24x24", 136 | "idiom" : "watch", 137 | "scale" : "2x", 138 | "role" : "notificationCenter", 139 | "subtype" : "38mm" 140 | }, 141 | { 142 | "size" : "27.5x27.5", 143 | "idiom" : "watch", 144 | "scale" : "2x", 145 | "role" : "notificationCenter", 146 | "subtype" : "42mm" 147 | }, 148 | { 149 | "size" : "29x29", 150 | "idiom" : "watch", 151 | "filename" : "Icon-Small@2x-1.png", 152 | "role" : "companionSettings", 153 | "scale" : "2x" 154 | }, 155 | { 156 | "size" : "29x29", 157 | "idiom" : "watch", 158 | "role" : "companionSettings", 159 | "scale" : "3x" 160 | }, 161 | { 162 | "size" : "40x40", 163 | "idiom" : "watch", 164 | "scale" : "2x", 165 | "role" : "appLauncher", 166 | "subtype" : "38mm" 167 | }, 168 | { 169 | "size" : "44x44", 170 | "idiom" : "watch", 171 | "scale" : "2x", 172 | "role" : "longLook", 173 | "subtype" : "42mm" 174 | }, 175 | { 176 | "size" : "86x86", 177 | "idiom" : "watch", 178 | "scale" : "2x", 179 | "role" : "quickLook", 180 | "subtype" : "38mm" 181 | }, 182 | { 183 | "size" : "98x98", 184 | "idiom" : "watch", 185 | "scale" : "2x", 186 | "role" : "quickLook", 187 | "subtype" : "42mm" 188 | }, 189 | { 190 | "idiom" : "mac", 191 | "size" : "16x16", 192 | "scale" : "1x" 193 | }, 194 | { 195 | "idiom" : "mac", 196 | "size" : "16x16", 197 | "scale" : "2x" 198 | }, 199 | { 200 | "idiom" : "mac", 201 | "size" : "32x32", 202 | "scale" : "1x" 203 | }, 204 | { 205 | "idiom" : "mac", 206 | "size" : "32x32", 207 | "scale" : "2x" 208 | }, 209 | { 210 | "idiom" : "mac", 211 | "size" : "128x128", 212 | "scale" : "1x" 213 | }, 214 | { 215 | "idiom" : "mac", 216 | "size" : "128x128", 217 | "scale" : "2x" 218 | }, 219 | { 220 | "idiom" : "mac", 221 | "size" : "256x256", 222 | "scale" : "1x" 223 | }, 224 | { 225 | "idiom" : "mac", 226 | "size" : "256x256", 227 | "scale" : "2x" 228 | }, 229 | { 230 | "size" : "512x512", 231 | "idiom" : "mac", 232 | "filename" : "Rx_Logo_M.png", 233 | "scale" : "1x" 234 | }, 235 | { 236 | "idiom" : "mac", 237 | "size" : "512x512", 238 | "scale" : "2x" 239 | } 240 | ], 241 | "info" : { 242 | "version" : 1, 243 | "author" : "xcode" 244 | } 245 | } -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@2x-1.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Rx_Logo_M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Examples/RxCoreMotionExample/Assets.xcassets/AppIcon.appiconset/Rx_Logo_M.png -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.1.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/ViewControllers/AccelerometerViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AccelerometerViewController.swift 3 | // RxCoreMotion 4 | // 5 | // Created by Carlos García on 22/05/16. 6 | // Copyright © 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import CoreMotion 12 | import RxCoreMotion 13 | 14 | class AccelerometerViewController: UIViewController { 15 | 16 | @IBOutlet weak var grillageView: GrillageView! 17 | 18 | let disposeBag = DisposeBag() 19 | let coreMotionManager = CMMotionManager.rx.manager() 20 | 21 | let circleView = RedCircleView() 22 | 23 | override func viewDidLoad() { 24 | super.viewDidLoad() 25 | view.addSubview(circleView) 26 | } 27 | 28 | override func viewDidAppear(_ animated: Bool) { 29 | super.viewDidAppear(animated) 30 | 31 | let grillageCenter = grillageView.center 32 | circleView.center = grillageCenter 33 | 34 | coreMotionManager 35 | .flatMapLatest { manager in 36 | manager.acceleration ?? Observable.empty() 37 | } 38 | .observeOn(MainScheduler.instance) 39 | .subscribe(onNext: { [weak self] acceleration in 40 | // translate 1G to 100 points 41 | let xG = CGFloat(acceleration.x) * 100 42 | let yG = -CGFloat(acceleration.y) * 100 43 | 44 | let xPos = grillageCenter.x + xG 45 | let yPos = grillageCenter.y + yG 46 | 47 | self?.circleView.center = CGPoint(x: xPos, y: yPos) 48 | }) 49 | .disposed(by: disposeBag) 50 | 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/ViewControllers/DeviceMotionViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeviceMotionViewController.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 23/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import CoreMotion 12 | import RxCoreMotion 13 | 14 | class DeviceMotionViewController: UIViewController { 15 | 16 | let disposeBag = DisposeBag() 17 | let coreMotionManager = CMMotionManager.rx.manager() 18 | let pedometerManager = CMPedometer() 19 | 20 | 21 | override func viewDidLoad() { 22 | super.viewDidLoad() 23 | } 24 | 25 | override func viewDidAppear(_ animated: Bool) { 26 | super.viewDidAppear(animated) 27 | 28 | coreMotionManager 29 | .flatMapLatest { manager in 30 | manager.deviceMotion ?? Observable.empty() 31 | } 32 | .observeOn(MainScheduler.instance) 33 | .subscribe(onNext: { deviceMotion in 34 | print(deviceMotion) 35 | }) 36 | .disposed(by: disposeBag) 37 | 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/ViewControllers/GyroscopeViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GyroscopeViewController.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 23/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import CoreMotion 12 | import RxCoreMotion 13 | 14 | class GyroscopeViewController: UIViewController { 15 | 16 | let disposeBag = DisposeBag() 17 | let coreMotionManager = CMMotionManager.rx.manager() 18 | 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | 23 | } 24 | 25 | override func viewDidAppear(_ animated: Bool) { 26 | super.viewDidAppear(animated) 27 | 28 | coreMotionManager 29 | .flatMapLatest { manager in 30 | manager.rotationRate ?? Observable.empty() 31 | } 32 | .observeOn(MainScheduler.instance) 33 | .subscribe(onNext: { rotationRate in 34 | print(rotationRate) 35 | }) 36 | .disposed(by: disposeBag) 37 | 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/ViewControllers/MagnetometerViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MagnetometerViewController.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 23/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import CoreMotion 12 | import RxCoreMotion 13 | 14 | class MagnetometerViewController: UIViewController { 15 | 16 | let disposeBag = DisposeBag() 17 | let coreMotionManager = CMMotionManager.rx.manager() 18 | 19 | override func viewDidLoad() { 20 | super.viewDidLoad() 21 | 22 | } 23 | 24 | override func viewDidAppear(_ animated: Bool) { 25 | super.viewDidAppear(animated) 26 | 27 | coreMotionManager 28 | .flatMapLatest { manager in 29 | manager.magneticField ?? Observable.empty() 30 | } 31 | .observeOn(MainScheduler.instance) 32 | .subscribe(onNext: { magneticField in 33 | print(magneticField) 34 | }) 35 | .disposed(by: disposeBag) 36 | 37 | } 38 | 39 | } 40 | 41 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Views/GrillageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GrillageView.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 23/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GrillageView: UIView { 12 | 13 | override func draw(_ rect: CGRect) { 14 | 15 | UIColor.lightGray.setStroke() 16 | 17 | let centerX = rect.midX 18 | let centerY = rect.midY 19 | 20 | // center 21 | let bp1 = UIBezierPath() 22 | bp1.lineWidth = 1 23 | bp1.move(to: CGPoint(x: centerX, y: rect.minY)) 24 | bp1.addLine(to: CGPoint(x: centerX, y: rect.maxY)) 25 | bp1.move(to: CGPoint(x: rect.minX, y: centerY)) 26 | bp1.addLine(to: CGPoint(x: rect.maxX, y: centerY)) 27 | bp1.stroke() 28 | 29 | // 100 square 30 | let square1Rect = CGRect(x: centerX-100, y: centerY-100, width: 200, height: 200) 31 | let bp2 = UIBezierPath(ovalIn: square1Rect) 32 | bp2.lineWidth = 1 33 | bp2.stroke() 34 | 35 | // 200 square 36 | let square2Rect = CGRect(x: centerX-200, y: centerY-200, width: 400, height: 400) 37 | let bp3 = UIBezierPath(ovalIn: square2Rect) 38 | bp3.lineWidth = 1 39 | bp3.stroke() 40 | 41 | // 300 square 42 | let square3Rect = CGRect(x: centerX-300, y: centerY-300, width: 600, height: 600) 43 | let bp4 = UIBezierPath(ovalIn: square3Rect) 44 | bp4.lineWidth = 1 45 | bp4.stroke() 46 | 47 | 48 | 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /Examples/RxCoreMotionExample/Views/RedCircleView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RedCircleView.swift 3 | // RxCoreMotion_Example 4 | // 5 | // Created by Carlos García on 23/05/16. 6 | // Copyright © 2016 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class RedCircleView: UIView { 12 | 13 | init() { 14 | super.init(frame: CGRect(x: 0.0, y: 0.0, width: 10.0, height: 10.0)) 15 | backgroundColor = UIColor.red 16 | layer.cornerRadius = 5.0 17 | } 18 | 19 | required init?(coder aDecoder: NSCoder) { 20 | fatalError("init(coder:) has not been implemented") 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 RxSwiftCommunity 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxCoreMotion/5816361f27e3f0713360f7c05080dbbc20835844/Pod/Assets/.gitkeep -------------------------------------------------------------------------------- /Pod/Classes/MotionActivityManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MotionActivityManager.swift 3 | // Pods 4 | // 5 | // Created by Francisco Gonçalves on 03/05/2017. 6 | // 7 | // 8 | 9 | import CoreMotion 10 | import RxSwift 11 | 12 | extension Reactive where Base: CMMotionActivityManager { 13 | static public func manager(createActivityManager: @escaping () throws -> CMMotionActivityManager = { CMMotionActivityManager() }) -> Observable { 14 | return Observable.create { observer in 15 | do { 16 | let activityManager = try createActivityManager() 17 | observer.on(.next(MotionActivityManager(motionActivityManager: activityManager))) 18 | } 19 | catch let e { 20 | observer.on(.error(e)) 21 | } 22 | return Disposables.create() 23 | }.share(replay: 1) 24 | } 25 | } 26 | 27 | var motionActivityKey: UInt8 = 0 28 | 29 | extension Reactive where Base: CMMotionActivityManager { 30 | public var motionActivity: Observable { 31 | return memoize(key: &motionActivityKey) { 32 | Observable.create { observer in 33 | let activityManager = self.base 34 | let operationQueue = OperationQueue() 35 | operationQueue.maxConcurrentOperationCount = 1 36 | 37 | activityManager.startActivityUpdates(to: operationQueue, withHandler: { (data) in 38 | guard let data = data else { 39 | return 40 | } 41 | observer.on(.next(data)) 42 | }) 43 | 44 | return Disposables.create() { 45 | activityManager.stopActivityUpdates() 46 | } 47 | }.share(replay: 1) 48 | } 49 | } 50 | } 51 | 52 | 53 | extension Reactive where Base: CMMotionActivityManager { 54 | func memoize(key: UnsafeRawPointer, createLazily: () -> Observable) -> Observable { 55 | objc_sync_enter(self); defer { objc_sync_exit(self) } 56 | 57 | if let sequence = objc_getAssociatedObject(self, key) as? Observable { 58 | return sequence 59 | } 60 | 61 | let sequence = createLazily() 62 | objc_setAssociatedObject(self, key, sequence, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 63 | 64 | return sequence 65 | } 66 | } 67 | 68 | // If the current device supports one of the capabilities, observable sequence will not be nil 69 | public struct MotionActivityManager { 70 | public let motionActivity: Observable? 71 | 72 | public init(motionActivityManager: CMMotionActivityManager) { 73 | if CMMotionActivityManager.isActivityAvailable() { 74 | self.motionActivity = motionActivityManager.rx.motionActivity 75 | } 76 | else { 77 | self.motionActivity = nil 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Pod/Classes/RxCoreMotion.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCoreMotion 3 | // 4 | // Created by Carlos García on 23/05/16. 5 | // Copyright (c) 2016 RxSwiftCommunity https://github.com/RxSwiftCommunity. All rights reserved. 6 | // 7 | import CoreMotion 8 | import RxSwift 9 | 10 | extension Reactive where Base: CMMotionManager { 11 | static public func manager(createMotionManager: @escaping () throws -> CMMotionManager = { CMMotionManager() }) -> Observable { 12 | return Observable.create { observer in 13 | do { 14 | let motionManager = try createMotionManager() 15 | observer.on(.next(MotionManager(motionManager: motionManager))) 16 | } 17 | catch let e { 18 | observer.on(.error(e)) 19 | } 20 | return Disposables.create() 21 | }.share(replay: 1) 22 | } 23 | } 24 | 25 | var accelerationKey: UInt8 = 0 26 | var accelerometerDataKey: UInt8 = 0 27 | var rotationKey: UInt8 = 0 28 | var magneticFieldKey: UInt8 = 0 29 | var deviceMotionKey: UInt8 = 0 30 | var pedometerKey: UInt8 = 0 31 | 32 | extension Reactive where Base: CMMotionManager { 33 | public var acceleration: Observable { 34 | return memoize(key: &accelerationKey) { 35 | Observable.create { observer in 36 | let motionManager = self.base 37 | let operationQueue = OperationQueue() 38 | operationQueue.maxConcurrentOperationCount = 1 39 | 40 | motionManager.startAccelerometerUpdates(to: operationQueue, withHandler: { (data: CMAccelerometerData?, error: Error?) -> Void in 41 | guard let data = data else { 42 | return 43 | } 44 | observer.on(.next(data.acceleration)) 45 | }) 46 | 47 | return Disposables.create() { 48 | motionManager.stopAccelerometerUpdates() 49 | } 50 | }.share(replay: 1) 51 | } 52 | } 53 | 54 | public var accelerometerData: Observable { 55 | return memoize(key: &accelerometerDataKey) { 56 | Observable.create { observer in 57 | let motionManager = self.base 58 | let operationQueue = OperationQueue() 59 | operationQueue.maxConcurrentOperationCount = 1 60 | 61 | motionManager.startAccelerometerUpdates(to: operationQueue, withHandler: { (data: CMAccelerometerData?, error: Error?) -> Void in 62 | guard let data = data else { 63 | return 64 | } 65 | observer.on(.next(data)) 66 | }) 67 | 68 | return Disposables.create() { 69 | motionManager.stopAccelerometerUpdates() 70 | } 71 | }.share(replay: 1) 72 | } 73 | } 74 | 75 | public var rotationRate: Observable { 76 | return memoize(key: &rotationKey) { 77 | Observable.create { observer in 78 | let motionManager = self.base 79 | let operationQueue = OperationQueue() 80 | operationQueue.maxConcurrentOperationCount = 1 81 | 82 | motionManager.startGyroUpdates(to: operationQueue, withHandler: { (data: CMGyroData?, error: Error?) -> Void in 83 | guard let data = data else { 84 | return 85 | } 86 | observer.on(.next(data.rotationRate)) 87 | }) 88 | 89 | return Disposables.create() { 90 | motionManager.stopGyroUpdates() 91 | } 92 | }.share(replay: 1) 93 | } 94 | } 95 | 96 | public var magneticField: Observable { 97 | return memoize(key: &magneticFieldKey) { 98 | Observable.create { observer in 99 | let motionManager = self.base 100 | let operationQueue = OperationQueue() 101 | operationQueue.maxConcurrentOperationCount = 1 102 | 103 | motionManager.startMagnetometerUpdates(to: operationQueue, withHandler: { (data: CMMagnetometerData?, error: Error?) -> Void in 104 | guard let data = data else { 105 | return 106 | } 107 | observer.on(.next(data.magneticField)) 108 | }) 109 | 110 | return Disposables.create() { 111 | motionManager.stopMagnetometerUpdates() 112 | } 113 | }.share(replay: 1) 114 | } 115 | } 116 | 117 | public var deviceMotion: Observable { 118 | return memoize(key: &deviceMotionKey) { 119 | Observable.create { observer in 120 | let motionManager = self.base 121 | let operationQueue = OperationQueue() 122 | operationQueue.maxConcurrentOperationCount = 1 123 | 124 | motionManager.startDeviceMotionUpdates(to: operationQueue, withHandler: { (data: CMDeviceMotion?, error: Error?) -> Void in 125 | guard let data = data else { 126 | return 127 | } 128 | observer.on(.next(data)) 129 | }) 130 | 131 | return Disposables.create() { 132 | motionManager.stopDeviceMotionUpdates() 133 | } 134 | }.share(replay: 1) 135 | } 136 | } 137 | } 138 | 139 | 140 | extension Reactive where Base: CMMotionManager { 141 | func memoize(key: UnsafeRawPointer, createLazily: () -> Observable) -> Observable { 142 | objc_sync_enter(self); defer { objc_sync_exit(self) } 143 | 144 | if let sequence = objc_getAssociatedObject(self, key) as? Observable { 145 | return sequence 146 | } 147 | 148 | let sequence = createLazily() 149 | objc_setAssociatedObject(self, key, sequence, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 150 | 151 | return sequence 152 | } 153 | } 154 | 155 | extension Reactive where Base: CMPedometer { 156 | public func pedometer(from: Date! = Date()) -> Observable { 157 | return memoize(key: &pedometerKey) { 158 | Observable.create { observer in 159 | let pedometer = self.base 160 | 161 | pedometer.startUpdates(from: from, withHandler: {(data, error) in 162 | guard let data = data else { 163 | return 164 | } 165 | observer.on(.next(data)) 166 | }) 167 | return Disposables.create() { 168 | pedometer.stopUpdates() 169 | if #available(iOS 10.0, *) { 170 | pedometer.stopEventUpdates() 171 | } 172 | } 173 | }.share(replay: 1) 174 | } 175 | } 176 | 177 | 178 | public var pedometer: Observable { 179 | return memoize(key: &pedometerKey) { 180 | Observable.create { observer in 181 | let pedometer = self.base 182 | 183 | pedometer.startUpdates(from: Date(), withHandler: {(data, error) in 184 | guard let data = data else { 185 | return 186 | } 187 | observer.on(.next(data)) 188 | }) 189 | return Disposables.create() { 190 | pedometer.stopUpdates() 191 | if #available(iOS 10.0, *) { 192 | pedometer.stopEventUpdates() 193 | } 194 | } 195 | }.share(replay: 1) 196 | } 197 | } 198 | 199 | func memoize(key: UnsafeRawPointer, createLazily: () -> Observable) -> Observable { 200 | objc_sync_enter(self); defer { objc_sync_exit(self) } 201 | 202 | if let sequence = objc_getAssociatedObject(self, key) as? Observable { 203 | return sequence 204 | } 205 | 206 | let sequence = createLazily() 207 | objc_setAssociatedObject(self, key, sequence, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 208 | 209 | return sequence 210 | } 211 | } 212 | 213 | 214 | // If the current device supports one of the capabilities, observable sequence will not be nil 215 | public struct MotionManager { 216 | public let acceleration: Observable? 217 | public let accelerometerData: Observable? 218 | public let rotationRate: Observable? 219 | public let magneticField: Observable? 220 | public let deviceMotion: Observable? 221 | 222 | public init(motionManager: CMMotionManager) { 223 | if motionManager.isAccelerometerAvailable { 224 | self.acceleration = motionManager.rx.acceleration 225 | self.accelerometerData = motionManager.rx.accelerometerData 226 | } 227 | else { 228 | self.acceleration = nil 229 | self.accelerometerData = nil 230 | } 231 | 232 | if motionManager.isGyroAvailable { 233 | self.rotationRate = motionManager.rx.rotationRate 234 | } 235 | else { 236 | self.rotationRate = nil 237 | } 238 | 239 | if motionManager.isMagnetometerAvailable { 240 | self.magneticField = motionManager.rx.magneticField 241 | } 242 | else { 243 | self.magneticField = nil 244 | } 245 | 246 | if motionManager.isDeviceMotionAvailable { 247 | self.deviceMotion = motionManager.rx.deviceMotion 248 | } 249 | else { 250 | self.deviceMotion = nil 251 | } 252 | } 253 | } 254 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # RxCoreMotion 3 | 4 | ## Usage 5 | 6 | This is an Rx extension that provides an easy and straight-forward way to use Apple iOS _CoreMotion_ responses as Observables. 7 | 8 | #### Example app 9 | 10 | To run the example project, clone the repo, and run `pod install` from the Example directory first. The app uses RxSwift, RxCocoa. 11 | 12 | ## Installation 13 | 14 | This library depends on __RxSwift__. 15 | 16 | #### CocoaPods 17 | RxCoreMotion will be available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile: 18 | 19 | ```ruby 20 | pod "RxCoreMotion" 21 | ``` 22 | 23 | #### Carthage 24 | 25 | Integrate `RxCoreMotion` with your `Cartfile` as folows: 26 | 27 | ```ruby 28 | github "RxSwiftCommunity/RxCoreMotion" 29 | ``` 30 | 31 | Run `carthage update` to build the framework and drag the built `RxCoreMotion.framework` into your Xcode project. 32 | 33 | #### As Source 34 | 35 | You can grab the __RxCoreMotion.swift__ file from this repo and include it in your project. 36 | 37 | ## Contributing 38 | 39 | Feel free to send a PR 40 | 41 | ## License 42 | 43 | This library belongs to _RxSwiftCommunity_. 44 | 45 | RxCoreMotion is available under the MIT license. See the LICENSE file for more info. 46 | -------------------------------------------------------------------------------- /RxCoreMotion.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = 'RxCoreMotion' 4 | s.version = '1.3.0' 5 | s.summary = 'An Rx wrapper of Apple iOS CoreMotion framework' 6 | 7 | s.description = <<-DESC 8 | This is an Rx extension that provides an easy and straight-forward way 9 | to use Apple iOS CoreMotion responses as Observables 10 | DESC 11 | 12 | s.homepage = 'https://github.com/RxSwiftCommunity/RxCoreMotion' 13 | s.license = 'MIT' 14 | s.author = { 'Carlos García' => 'carlosypunto@gmail.com' } 15 | s.source = { 16 | :git => "https://github.com/RxSwiftCommunity/RxCoreMotion.git", 17 | :tag => s.version.to_s 18 | } 19 | 20 | s.requires_arc = true 21 | s.ios.deployment_target = '8.0' 22 | s.watchos.deployment_target = '3.0' 23 | s.source_files = 'Pod/Classes/*.swift' 24 | s.frameworks = 'Foundation', 'CoreMotion' 25 | s.dependency 'RxSwift', '~> 4.0' 26 | 27 | end 28 | -------------------------------------------------------------------------------- /RxCoreMotion.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 07D678661E7F67540013F645 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07D678651E7F67540013F645 /* RxSwift.framework */; }; 11 | 07D678681E7F676C0013F645 /* RxCoreMotion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07D678671E7F676C0013F645 /* RxCoreMotion.swift */; }; 12 | 07D6786C1E7F67B10013F645 /* RxCoreMotion.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D6786B1E7F67940013F645 /* RxCoreMotion.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 07D6786E1E7F6D080013F645 /* RxSwift.framework.dSYM in [Carthage] Copy dSYMS */ = {isa = PBXBuildFile; fileRef = 07D6786D1E7F6C4B0013F645 /* RxSwift.framework.dSYM */; }; 14 | 667B13081E7BCE22001151C7 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 667B13071E7BCE22001151C7 /* CoreMotion.framework */; }; 15 | 667B130A1E7BCE28001151C7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 667B13091E7BCE28001151C7 /* Foundation.framework */; }; 16 | 79FD4AFA1ED4C03500B27328 /* MotionActivityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79FD4AF91ED4C03500B27328 /* MotionActivityManager.swift */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXCopyFilesBuildPhase section */ 20 | 667B13031E7BCCA9001151C7 /* [Carthage] Copy dSYMS */ = { 21 | isa = PBXCopyFilesBuildPhase; 22 | buildActionMask = 2147483647; 23 | dstPath = ""; 24 | dstSubfolderSpec = 16; 25 | files = ( 26 | 07D6786E1E7F6D080013F645 /* RxSwift.framework.dSYM in [Carthage] Copy dSYMS */, 27 | ); 28 | name = "[Carthage] Copy dSYMS"; 29 | runOnlyForDeploymentPostprocessing = 0; 30 | }; 31 | /* End PBXCopyFilesBuildPhase section */ 32 | 33 | /* Begin PBXFileReference section */ 34 | 07D678651E7F67540013F645 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = ""; }; 35 | 07D678671E7F676C0013F645 /* RxCoreMotion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RxCoreMotion.swift; path = Pod/Classes/RxCoreMotion.swift; sourceTree = SOURCE_ROOT; }; 36 | 07D6786A1E7F67940013F645 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 07D6786B1E7F67940013F645 /* RxCoreMotion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RxCoreMotion.h; sourceTree = ""; }; 38 | 07D6786D1E7F6C4B0013F645 /* RxSwift.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = RxSwift.framework.dSYM; path = Carthage/Build/iOS/RxSwift.framework.dSYM; sourceTree = ""; }; 39 | 667B12F51E7BCACB001151C7 /* RxCoreMotion.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxCoreMotion.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; 41 | 667B13091E7BCE28001151C7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 42 | 79FD4AF91ED4C03500B27328 /* MotionActivityManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MotionActivityManager.swift; path = Pod/Classes/MotionActivityManager.swift; sourceTree = SOURCE_ROOT; }; 43 | /* End PBXFileReference section */ 44 | 45 | /* Begin PBXFrameworksBuildPhase section */ 46 | 667B12F11E7BCACB001151C7 /* Frameworks */ = { 47 | isa = PBXFrameworksBuildPhase; 48 | buildActionMask = 2147483647; 49 | files = ( 50 | 667B130A1E7BCE28001151C7 /* Foundation.framework in Frameworks */, 51 | 667B13081E7BCE22001151C7 /* CoreMotion.framework in Frameworks */, 52 | 07D678661E7F67540013F645 /* RxSwift.framework in Frameworks */, 53 | ); 54 | runOnlyForDeploymentPostprocessing = 0; 55 | }; 56 | /* End PBXFrameworksBuildPhase section */ 57 | 58 | /* Begin PBXGroup section */ 59 | 071AD59F1CF171850058C7ED = { 60 | isa = PBXGroup; 61 | children = ( 62 | 07D678621E7F64790013F645 /* Classes */, 63 | 07D678691E7F67940013F645 /* RxCoreMotion */, 64 | 071AD5A91CF171850058C7ED /* Products */, 65 | 788EF9CBABF5068261AC6651 /* Frameworks */, 66 | ); 67 | sourceTree = ""; 68 | }; 69 | 071AD5A91CF171850058C7ED /* Products */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 667B12F51E7BCACB001151C7 /* RxCoreMotion.framework */, 73 | ); 74 | name = Products; 75 | sourceTree = ""; 76 | }; 77 | 07D678621E7F64790013F645 /* Classes */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 07D678671E7F676C0013F645 /* RxCoreMotion.swift */, 81 | 79FD4AF91ED4C03500B27328 /* MotionActivityManager.swift */, 82 | ); 83 | name = Classes; 84 | path = ../Pod/Classes; 85 | sourceTree = ""; 86 | }; 87 | 07D678691E7F67940013F645 /* RxCoreMotion */ = { 88 | isa = PBXGroup; 89 | children = ( 90 | 07D6786A1E7F67940013F645 /* Info.plist */, 91 | 07D6786B1E7F67940013F645 /* RxCoreMotion.h */, 92 | ); 93 | path = RxCoreMotion; 94 | sourceTree = SOURCE_ROOT; 95 | }; 96 | 788EF9CBABF5068261AC6651 /* Frameworks */ = { 97 | isa = PBXGroup; 98 | children = ( 99 | 07D6786D1E7F6C4B0013F645 /* RxSwift.framework.dSYM */, 100 | 07D678651E7F67540013F645 /* RxSwift.framework */, 101 | 667B13071E7BCE22001151C7 /* CoreMotion.framework */, 102 | 667B13091E7BCE28001151C7 /* Foundation.framework */, 103 | ); 104 | name = Frameworks; 105 | sourceTree = ""; 106 | }; 107 | /* End PBXGroup section */ 108 | 109 | /* Begin PBXHeadersBuildPhase section */ 110 | 667B12F21E7BCACB001151C7 /* Headers */ = { 111 | isa = PBXHeadersBuildPhase; 112 | buildActionMask = 2147483647; 113 | files = ( 114 | 07D6786C1E7F67B10013F645 /* RxCoreMotion.h in Headers */, 115 | ); 116 | runOnlyForDeploymentPostprocessing = 0; 117 | }; 118 | /* End PBXHeadersBuildPhase section */ 119 | 120 | /* Begin PBXNativeTarget section */ 121 | 667B12F41E7BCACB001151C7 /* RxCoreMotion */ = { 122 | isa = PBXNativeTarget; 123 | buildConfigurationList = 667B12FC1E7BCACB001151C7 /* Build configuration list for PBXNativeTarget "RxCoreMotion" */; 124 | buildPhases = ( 125 | 667B12F01E7BCACB001151C7 /* Sources */, 126 | 667B12F11E7BCACB001151C7 /* Frameworks */, 127 | 667B12F21E7BCACB001151C7 /* Headers */, 128 | 667B12F31E7BCACB001151C7 /* Resources */, 129 | 667B13061E7BCCF5001151C7 /* [Carthage] Copy Frameworks */, 130 | 667B13031E7BCCA9001151C7 /* [Carthage] Copy dSYMS */, 131 | ); 132 | buildRules = ( 133 | ); 134 | dependencies = ( 135 | ); 136 | name = RxCoreMotion; 137 | productName = "RxCoreMotion iOS"; 138 | productReference = 667B12F51E7BCACB001151C7 /* RxCoreMotion.framework */; 139 | productType = "com.apple.product-type.framework"; 140 | }; 141 | /* End PBXNativeTarget section */ 142 | 143 | /* Begin PBXProject section */ 144 | 071AD5A01CF171850058C7ED /* Project object */ = { 145 | isa = PBXProject; 146 | attributes = { 147 | LastSwiftUpdateCheck = 0730; 148 | LastUpgradeCheck = 0800; 149 | ORGANIZATIONNAME = "RxSwiftCommunity - https://github.com/RxSwiftCommunity"; 150 | TargetAttributes = { 151 | 667B12F41E7BCACB001151C7 = { 152 | CreatedOnToolsVersion = 8.3; 153 | LastSwiftMigration = 0830; 154 | ProvisioningStyle = Automatic; 155 | }; 156 | }; 157 | }; 158 | buildConfigurationList = 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotion" */; 159 | compatibilityVersion = "Xcode 3.2"; 160 | developmentRegion = English; 161 | hasScannedForEncodings = 0; 162 | knownRegions = ( 163 | en, 164 | Base, 165 | ); 166 | mainGroup = 071AD59F1CF171850058C7ED; 167 | productRefGroup = 071AD5A91CF171850058C7ED /* Products */; 168 | projectDirPath = ""; 169 | projectRoot = ""; 170 | targets = ( 171 | 667B12F41E7BCACB001151C7 /* RxCoreMotion */, 172 | ); 173 | }; 174 | /* End PBXProject section */ 175 | 176 | /* Begin PBXResourcesBuildPhase section */ 177 | 667B12F31E7BCACB001151C7 /* Resources */ = { 178 | isa = PBXResourcesBuildPhase; 179 | buildActionMask = 2147483647; 180 | files = ( 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | }; 184 | /* End PBXResourcesBuildPhase section */ 185 | 186 | /* Begin PBXShellScriptBuildPhase section */ 187 | 667B13061E7BCCF5001151C7 /* [Carthage] Copy Frameworks */ = { 188 | isa = PBXShellScriptBuildPhase; 189 | buildActionMask = 2147483647; 190 | files = ( 191 | ); 192 | inputPaths = ( 193 | ); 194 | name = "[Carthage] Copy Frameworks"; 195 | outputPaths = ( 196 | ); 197 | runOnlyForDeploymentPostprocessing = 0; 198 | shellPath = /bin/sh; 199 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 200 | }; 201 | /* End PBXShellScriptBuildPhase section */ 202 | 203 | /* Begin PBXSourcesBuildPhase section */ 204 | 667B12F01E7BCACB001151C7 /* Sources */ = { 205 | isa = PBXSourcesBuildPhase; 206 | buildActionMask = 2147483647; 207 | files = ( 208 | 79FD4AFA1ED4C03500B27328 /* MotionActivityManager.swift in Sources */, 209 | 07D678681E7F676C0013F645 /* RxCoreMotion.swift in Sources */, 210 | ); 211 | runOnlyForDeploymentPostprocessing = 0; 212 | }; 213 | /* End PBXSourcesBuildPhase section */ 214 | 215 | /* Begin XCBuildConfiguration section */ 216 | 071AD5B81CF171850058C7ED /* Debug */ = { 217 | isa = XCBuildConfiguration; 218 | buildSettings = { 219 | ALWAYS_SEARCH_USER_PATHS = NO; 220 | CLANG_ANALYZER_NONNULL = YES; 221 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 222 | CLANG_CXX_LIBRARY = "libc++"; 223 | CLANG_ENABLE_MODULES = YES; 224 | CLANG_ENABLE_OBJC_ARC = YES; 225 | CLANG_WARN_BOOL_CONVERSION = YES; 226 | CLANG_WARN_CONSTANT_CONVERSION = YES; 227 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 228 | CLANG_WARN_EMPTY_BODY = YES; 229 | CLANG_WARN_ENUM_CONVERSION = YES; 230 | CLANG_WARN_INFINITE_RECURSION = YES; 231 | CLANG_WARN_INT_CONVERSION = YES; 232 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 233 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 234 | CLANG_WARN_UNREACHABLE_CODE = YES; 235 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 236 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 237 | COPY_PHASE_STRIP = NO; 238 | DEBUG_INFORMATION_FORMAT = dwarf; 239 | ENABLE_STRICT_OBJC_MSGSEND = YES; 240 | ENABLE_TESTABILITY = YES; 241 | GCC_C_LANGUAGE_STANDARD = gnu99; 242 | GCC_DYNAMIC_NO_PIC = NO; 243 | GCC_NO_COMMON_BLOCKS = YES; 244 | GCC_OPTIMIZATION_LEVEL = 0; 245 | GCC_PREPROCESSOR_DEFINITIONS = ( 246 | "DEBUG=1", 247 | "$(inherited)", 248 | ); 249 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 250 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 251 | GCC_WARN_UNDECLARED_SELECTOR = YES; 252 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 253 | GCC_WARN_UNUSED_FUNCTION = YES; 254 | GCC_WARN_UNUSED_VARIABLE = YES; 255 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 256 | MTL_ENABLE_DEBUG_INFO = YES; 257 | ONLY_ACTIVE_ARCH = YES; 258 | SDKROOT = iphoneos; 259 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 260 | SWIFT_VERSION = 3.0; 261 | }; 262 | name = Debug; 263 | }; 264 | 071AD5B91CF171850058C7ED /* Release */ = { 265 | isa = XCBuildConfiguration; 266 | buildSettings = { 267 | ALWAYS_SEARCH_USER_PATHS = NO; 268 | CLANG_ANALYZER_NONNULL = YES; 269 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 270 | CLANG_CXX_LIBRARY = "libc++"; 271 | CLANG_ENABLE_MODULES = YES; 272 | CLANG_ENABLE_OBJC_ARC = YES; 273 | CLANG_WARN_BOOL_CONVERSION = YES; 274 | CLANG_WARN_CONSTANT_CONVERSION = YES; 275 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 276 | CLANG_WARN_EMPTY_BODY = YES; 277 | CLANG_WARN_ENUM_CONVERSION = YES; 278 | CLANG_WARN_INFINITE_RECURSION = YES; 279 | CLANG_WARN_INT_CONVERSION = YES; 280 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 281 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 282 | CLANG_WARN_UNREACHABLE_CODE = YES; 283 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 284 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 285 | COPY_PHASE_STRIP = NO; 286 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 287 | ENABLE_NS_ASSERTIONS = NO; 288 | ENABLE_STRICT_OBJC_MSGSEND = YES; 289 | GCC_C_LANGUAGE_STANDARD = gnu99; 290 | GCC_NO_COMMON_BLOCKS = YES; 291 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 292 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 293 | GCC_WARN_UNDECLARED_SELECTOR = YES; 294 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 295 | GCC_WARN_UNUSED_FUNCTION = YES; 296 | GCC_WARN_UNUSED_VARIABLE = YES; 297 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 298 | MTL_ENABLE_DEBUG_INFO = NO; 299 | SDKROOT = iphoneos; 300 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 301 | SWIFT_VERSION = 3.0; 302 | VALIDATE_PRODUCT = YES; 303 | }; 304 | name = Release; 305 | }; 306 | 667B12FA1E7BCACB001151C7 /* Debug */ = { 307 | isa = XCBuildConfiguration; 308 | buildSettings = { 309 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 310 | CLANG_ENABLE_MODULES = YES; 311 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 312 | CODE_SIGN_IDENTITY = ""; 313 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 314 | CURRENT_PROJECT_VERSION = 1; 315 | DEFINES_MODULE = YES; 316 | DEVELOPMENT_TEAM = ""; 317 | DYLIB_COMPATIBILITY_VERSION = 1; 318 | DYLIB_CURRENT_VERSION = 1; 319 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 320 | FRAMEWORK_SEARCH_PATHS = ( 321 | "$(inherited)", 322 | "$(PROJECT_DIR)/Carthage/Build/iOS", 323 | ); 324 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotion/Info.plist"; 325 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 326 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 327 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 328 | PRODUCT_BUNDLE_IDENTIFIER = rx.swift.RxCoreMotion; 329 | PRODUCT_NAME = "$(TARGET_NAME)"; 330 | SKIP_INSTALL = YES; 331 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 332 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 333 | SWIFT_VERSION = 3.0; 334 | TARGETED_DEVICE_FAMILY = "1,2"; 335 | VERSIONING_SYSTEM = "apple-generic"; 336 | VERSION_INFO_PREFIX = ""; 337 | }; 338 | name = Debug; 339 | }; 340 | 667B12FB1E7BCACB001151C7 /* Release */ = { 341 | isa = XCBuildConfiguration; 342 | buildSettings = { 343 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 344 | CLANG_ENABLE_MODULES = YES; 345 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 346 | CODE_SIGN_IDENTITY = ""; 347 | CURRENT_PROJECT_VERSION = 1; 348 | DEFINES_MODULE = YES; 349 | DEVELOPMENT_TEAM = ""; 350 | DYLIB_COMPATIBILITY_VERSION = 1; 351 | DYLIB_CURRENT_VERSION = 1; 352 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 353 | FRAMEWORK_SEARCH_PATHS = ( 354 | "$(inherited)", 355 | "$(PROJECT_DIR)/Carthage/Build/iOS", 356 | ); 357 | INFOPLIST_FILE = "$(SRCROOT)/RxCoreMotion/Info.plist"; 358 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 359 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 360 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 361 | PRODUCT_BUNDLE_IDENTIFIER = rx.swift.RxCoreMotion; 362 | PRODUCT_NAME = "$(TARGET_NAME)"; 363 | SKIP_INSTALL = YES; 364 | SWIFT_VERSION = 3.0; 365 | TARGETED_DEVICE_FAMILY = "1,2"; 366 | VERSIONING_SYSTEM = "apple-generic"; 367 | VERSION_INFO_PREFIX = ""; 368 | }; 369 | name = Release; 370 | }; 371 | /* End XCBuildConfiguration section */ 372 | 373 | /* Begin XCConfigurationList section */ 374 | 071AD5A31CF171850058C7ED /* Build configuration list for PBXProject "RxCoreMotion" */ = { 375 | isa = XCConfigurationList; 376 | buildConfigurations = ( 377 | 071AD5B81CF171850058C7ED /* Debug */, 378 | 071AD5B91CF171850058C7ED /* Release */, 379 | ); 380 | defaultConfigurationIsVisible = 0; 381 | defaultConfigurationName = Release; 382 | }; 383 | 667B12FC1E7BCACB001151C7 /* Build configuration list for PBXNativeTarget "RxCoreMotion" */ = { 384 | isa = XCConfigurationList; 385 | buildConfigurations = ( 386 | 667B12FA1E7BCACB001151C7 /* Debug */, 387 | 667B12FB1E7BCACB001151C7 /* Release */, 388 | ); 389 | defaultConfigurationIsVisible = 0; 390 | defaultConfigurationName = Release; 391 | }; 392 | /* End XCConfigurationList section */ 393 | }; 394 | rootObject = 071AD5A01CF171850058C7ED /* Project object */; 395 | } 396 | -------------------------------------------------------------------------------- /RxCoreMotion.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxCoreMotion.xcodeproj/xcshareddata/xcschemes/RxCoreMotion.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 55 | 61 | 62 | 63 | 64 | 65 | 66 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /RxCoreMotion/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.1 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /RxCoreMotion/RxCoreMotion.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCoreMotion iOS.h 3 | // RxCoreMotion iOS 4 | // 5 | // Created by Kieran Graham on 17/03/2017. 6 | // Copyright © 2017 RxSwiftCommunity - https://github.com/RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for RxCoreMotion iOS. 12 | FOUNDATION_EXPORT double RxCoreMotionVersionNumber; 13 | 14 | //! Project version string for RxCoreMotion iOS. 15 | FOUNDATION_EXPORT const unsigned char RxCoreMotionVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | --------------------------------------------------------------------------------