├── .flowconfig ├── .gitignore ├── .npmignore ├── README.md ├── iOS ├── AppHubStarterProject.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── AppHubStarterProject.xcscheme ├── AppHubStarterProject │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ └── main.m └── main.jsbundle ├── index.ios.js └── package.json /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | # We fork some components by platform. 4 | .*/*.web.js 5 | .*/*.android.js 6 | 7 | # Some modules have their own node_modules with overlap 8 | .*/node_modules/node-haste/.* 9 | 10 | # Ignore react-tools where there are overlaps, but don't ignore anything that 11 | # react-native relies on 12 | .*/node_modules/react-tools/src/React.js 13 | .*/node_modules/react-tools/src/renderers/shared/event/EventPropagators.js 14 | .*/node_modules/react-tools/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js 15 | .*/node_modules/react-tools/src/shared/vendor/core/ExecutionEnvironment.js 16 | 17 | 18 | # Ignore commoner tests 19 | .*/node_modules/commoner/test/.* 20 | 21 | # See https://github.com/facebook/flow/issues/442 22 | .*/react-tools/node_modules/commoner/lib/reader.js 23 | 24 | # Ignore jest 25 | .*/react-native/node_modules/jest-cli/.* 26 | 27 | [include] 28 | 29 | [libs] 30 | node_modules/react-native/Libraries/react-native/react-native-interface.js 31 | 32 | [options] 33 | module.system=haste 34 | 35 | munge_underscores=true 36 | 37 | suppress_type=$FlowIssue 38 | suppress_type=$FlowFixMe 39 | suppress_type=$FixMe 40 | 41 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 42 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(1[0-4]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)? #[0-9]+ 43 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 44 | 45 | [version] 46 | 0.14.0 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | node_modules/ 6 | 7 | ## Build generated 8 | build/ 9 | DerivedData 10 | 11 | ## Various settings 12 | *.pbxuser 13 | !default.pbxuser 14 | *.mode1v3 15 | !default.mode1v3 16 | *.mode2v3 17 | !default.mode2v3 18 | *.perspectivev3 19 | !default.perspectivev3 20 | xcuserdata 21 | 22 | ## Other 23 | *.xccheckout 24 | *.moved-aside 25 | *.xcuserstate 26 | *.xcscmblueprint 27 | 28 | ## Obj-C/Swift specific 29 | *.hmap 30 | *.ipa 31 | 32 | # CocoaPods 33 | # 34 | # We recommend against adding the Pods directory to your .gitignore. However 35 | # you should judge for yourself, the pros and cons are mentioned at: 36 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 37 | # 38 | #Pods/ 39 | 40 | # Carthage 41 | # 42 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 43 | # Carthage/Checkouts 44 | 45 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # node.js 25 | # 26 | node_modules/ 27 | npm-debug.log 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AppHub Starter Project 2 | 3 | This is an example project which uses AppHub to instantly push updates to users. 4 | For more information on AppHub and its features, visit [the website](https://apphub.io) and 5 | [the docs](https://apphub.io/docs). 6 | 7 | In this project, we prompt the user with a `UIAlertView` when an update becomes available. The user can choose to 8 | "Update" the app instantly, or press "Cancel", in which case the app will be updated upon restart. 9 | 10 | All AppHub specific code can be found in 11 | [AppDelegate.m](https://github.com/AppHubPlatform/AppHubStarterProject/blob/master/iOS/AppHubStarterProject/AppDelegate.m). 12 | 13 | ## Getting Started 14 | 15 | To get started, clone or fork this repo and run: 16 | 17 | npm install 18 | 19 | in the root directory. 20 | 21 | Then, open `iOS/AppHubStarterProject.xcodeproj` and set your Application ID as specified from the 22 | AppHub dashboard: 23 | 24 | [AppHub setApplicationID:@"APPLICATION ID"]; 25 | 26 | Once you have set the Application ID, hit run in Xcode. 27 | 28 | Take a look at the options inside the `sourceURLForBridge:` method of [AppDelegate.m](https://github.com/AppHubPlatform/AppHubStarterProject/blob/master/iOS/AppHubStarterProject/AppDelegate.m#L54). 29 | You should use "Option 1" while developing, and switch to "Option 2" when deploying to beta and production users. 30 | 31 | ## Creating AppHub Builds 32 | 33 | To update your app, use the [AppHub CLI](http://docs.apphub.io/v1.0/docs/apphub-cli) to build a .zip 34 | of your app. You can then use the AppHub Dashboard or REST API to upload the build. 35 | 36 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 11 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; 12 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; 13 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 14 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; 15 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 16 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 17 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; 18 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 19 | 400C2F3D1BA4AAD40003A96D /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 400C2F3C1BA4AAD40003A96D /* SystemConfiguration.framework */; }; 20 | 400C2F561BA4B5AA0003A96D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 400C2F4D1BA4B5AA0003A96D /* AppDelegate.m */; }; 21 | 400C2F581BA4B5AA0003A96D /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 400C2F501BA4B5AA0003A96D /* LaunchScreen.xib */; }; 22 | 400C2F591BA4B5AA0003A96D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 400C2F521BA4B5AA0003A96D /* Images.xcassets */; }; 23 | 400C2F5C1BA4B5AA0003A96D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 400C2F551BA4B5AA0003A96D /* main.m */; }; 24 | 406A9B9C1BF3F4780083E538 /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 406A9B9B1BF3F4780083E538 /* main.jsbundle */; }; 25 | 40EA7FBA1BAB768000CD144C /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 405E2BF01BAB694F00A6915B /* libz.tbd */; }; 26 | 40F718D21C1CB51B0040FB3E /* libAppHub.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40F718CF1C1CB5100040FB3E /* libAppHub.a */; }; 27 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXContainerItemProxy section */ 31 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { 32 | isa = PBXContainerItemProxy; 33 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 34 | proxyType = 2; 35 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 36 | remoteInfo = RCTActionSheet; 37 | }; 38 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { 39 | isa = PBXContainerItemProxy; 40 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 41 | proxyType = 2; 42 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 43 | remoteInfo = RCTGeolocation; 44 | }; 45 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { 46 | isa = PBXContainerItemProxy; 47 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 48 | proxyType = 2; 49 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676; 50 | remoteInfo = RCTImage; 51 | }; 52 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { 53 | isa = PBXContainerItemProxy; 54 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 55 | proxyType = 2; 56 | remoteGlobalIDString = 58B511DB1A9E6C8500147676; 57 | remoteInfo = RCTNetwork; 58 | }; 59 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { 60 | isa = PBXContainerItemProxy; 61 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 62 | proxyType = 2; 63 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; 64 | remoteInfo = RCTVibration; 65 | }; 66 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { 67 | isa = PBXContainerItemProxy; 68 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 69 | proxyType = 2; 70 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 71 | remoteInfo = RCTSettings; 72 | }; 73 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { 74 | isa = PBXContainerItemProxy; 75 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 76 | proxyType = 2; 77 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A; 78 | remoteInfo = RCTWebSocket; 79 | }; 80 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { 81 | isa = PBXContainerItemProxy; 82 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; 83 | proxyType = 2; 84 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; 85 | remoteInfo = React; 86 | }; 87 | 40F718CE1C1CB5100040FB3E /* PBXContainerItemProxy */ = { 88 | isa = PBXContainerItemProxy; 89 | containerPortal = 40F718C71C1CB5100040FB3E /* AppHub.xcodeproj */; 90 | proxyType = 2; 91 | remoteGlobalIDString = 555FF3AF1B37AC8D0064F175; 92 | remoteInfo = AppHub; 93 | }; 94 | 40F718D01C1CB5100040FB3E /* PBXContainerItemProxy */ = { 95 | isa = PBXContainerItemProxy; 96 | containerPortal = 40F718C71C1CB5100040FB3E /* AppHub.xcodeproj */; 97 | proxyType = 2; 98 | remoteGlobalIDString = 555FF3BA1B37AC8D0064F175; 99 | remoteInfo = AppHubTests; 100 | }; 101 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { 102 | isa = PBXContainerItemProxy; 103 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 104 | proxyType = 2; 105 | remoteGlobalIDString = 134814201AA4EA6300B7C361; 106 | remoteInfo = RCTLinking; 107 | }; 108 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { 109 | isa = PBXContainerItemProxy; 110 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 111 | proxyType = 2; 112 | remoteGlobalIDString = 58B5119B1A9E6C1200147676; 113 | remoteInfo = RCTText; 114 | }; 115 | /* End PBXContainerItemProxy section */ 116 | 117 | /* Begin PBXFileReference section */ 118 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; 119 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; 120 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; 121 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 122 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 123 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 124 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 125 | 13B07F961A680F5B00A75B9A /* AppHubStarterProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppHubStarterProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 126 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; 127 | 400C2F3C1BA4AAD40003A96D /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 128 | 400C2F4C1BA4B5AA0003A96D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = AppHubStarterProject/AppDelegate.h; sourceTree = SOURCE_ROOT; }; 129 | 400C2F4D1BA4B5AA0003A96D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = AppHubStarterProject/AppDelegate.m; sourceTree = SOURCE_ROOT; }; 130 | 400C2F511BA4B5AA0003A96D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = LaunchScreen.xib; sourceTree = ""; }; 131 | 400C2F521BA4B5AA0003A96D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AppHubStarterProject/Images.xcassets; sourceTree = SOURCE_ROOT; }; 132 | 400C2F531BA4B5AA0003A96D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = AppHubStarterProject/Info.plist; sourceTree = SOURCE_ROOT; }; 133 | 400C2F551BA4B5AA0003A96D /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = AppHubStarterProject/main.m; sourceTree = SOURCE_ROOT; }; 134 | 405E2BF01BAB694F00A6915B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; 135 | 406A9B9B1BF3F4780083E538 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = SOURCE_ROOT; }; 136 | 40F718C71C1CB5100040FB3E /* AppHub.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AppHub.xcodeproj; path = ../node_modules/apphub/AppHub/AppHub.xcodeproj; sourceTree = ""; }; 137 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 138 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 139 | /* End PBXFileReference section */ 140 | 141 | /* Begin PBXFrameworksBuildPhase section */ 142 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 143 | isa = PBXFrameworksBuildPhase; 144 | buildActionMask = 2147483647; 145 | files = ( 146 | 40F718D21C1CB51B0040FB3E /* libAppHub.a in Frameworks */, 147 | 40EA7FBA1BAB768000CD144C /* libz.tbd in Frameworks */, 148 | 400C2F3D1BA4AAD40003A96D /* SystemConfiguration.framework in Frameworks */, 149 | 146834051AC3E58100842450 /* libReact.a in Frameworks */, 150 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 151 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 152 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 153 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, 154 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 155 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 156 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 157 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 158 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 159 | ); 160 | runOnlyForDeploymentPostprocessing = 0; 161 | }; 162 | /* End PBXFrameworksBuildPhase section */ 163 | 164 | /* Begin PBXGroup section */ 165 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = { 166 | isa = PBXGroup; 167 | children = ( 168 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, 169 | ); 170 | name = Products; 171 | sourceTree = ""; 172 | }; 173 | 00C302B61ABCB90400DB3ED1 /* Products */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, 177 | ); 178 | name = Products; 179 | sourceTree = ""; 180 | }; 181 | 00C302BC1ABCB91800DB3ED1 /* Products */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, 185 | ); 186 | name = Products; 187 | sourceTree = ""; 188 | }; 189 | 00C302D41ABCB9D200DB3ED1 /* Products */ = { 190 | isa = PBXGroup; 191 | children = ( 192 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, 193 | ); 194 | name = Products; 195 | sourceTree = ""; 196 | }; 197 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, 201 | ); 202 | name = Products; 203 | sourceTree = ""; 204 | }; 205 | 139105B71AF99BAD00B5F7CC /* Products */ = { 206 | isa = PBXGroup; 207 | children = ( 208 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, 209 | ); 210 | name = Products; 211 | sourceTree = ""; 212 | }; 213 | 139FDEE71B06529A00C62182 /* Products */ = { 214 | isa = PBXGroup; 215 | children = ( 216 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 217 | ); 218 | name = Products; 219 | sourceTree = ""; 220 | }; 221 | 13B07FAE1A68108700A75B9A /* AppHubStarterProject */ = { 222 | isa = PBXGroup; 223 | children = ( 224 | 406A9B9B1BF3F4780083E538 /* main.jsbundle */, 225 | 400C2F4C1BA4B5AA0003A96D /* AppDelegate.h */, 226 | 400C2F4D1BA4B5AA0003A96D /* AppDelegate.m */, 227 | 400C2F4F1BA4B5AA0003A96D /* Base.lproj */, 228 | 400C2F521BA4B5AA0003A96D /* Images.xcassets */, 229 | 400C2F531BA4B5AA0003A96D /* Info.plist */, 230 | 400C2F551BA4B5AA0003A96D /* main.m */, 231 | ); 232 | name = AppHubStarterProject; 233 | path = AppHubStarter; 234 | sourceTree = ""; 235 | }; 236 | 146834001AC3E56700842450 /* Products */ = { 237 | isa = PBXGroup; 238 | children = ( 239 | 146834041AC3E56700842450 /* libReact.a */, 240 | ); 241 | name = Products; 242 | sourceTree = ""; 243 | }; 244 | 400C2F4F1BA4B5AA0003A96D /* Base.lproj */ = { 245 | isa = PBXGroup; 246 | children = ( 247 | 400C2F501BA4B5AA0003A96D /* LaunchScreen.xib */, 248 | ); 249 | name = Base.lproj; 250 | path = AppHubStarterProject/Base.lproj; 251 | sourceTree = SOURCE_ROOT; 252 | }; 253 | 40F718C81C1CB5100040FB3E /* Products */ = { 254 | isa = PBXGroup; 255 | children = ( 256 | 40F718CF1C1CB5100040FB3E /* libAppHub.a */, 257 | 40F718D11C1CB5100040FB3E /* AppHub.xctest */, 258 | ); 259 | name = Products; 260 | sourceTree = ""; 261 | }; 262 | 78C398B11ACF4ADC00677621 /* Products */ = { 263 | isa = PBXGroup; 264 | children = ( 265 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, 266 | ); 267 | name = Products; 268 | sourceTree = ""; 269 | }; 270 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 271 | isa = PBXGroup; 272 | children = ( 273 | 40F718C71C1CB5100040FB3E /* AppHub.xcodeproj */, 274 | 405E2BF01BAB694F00A6915B /* libz.tbd */, 275 | 400C2F3C1BA4AAD40003A96D /* SystemConfiguration.framework */, 276 | 146833FF1AC3E56700842450 /* React.xcodeproj */, 277 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 278 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, 279 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, 280 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, 281 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, 282 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, 283 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 284 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 285 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 286 | ); 287 | name = Libraries; 288 | sourceTree = ""; 289 | }; 290 | 832341B11AAA6A8300B99B32 /* Products */ = { 291 | isa = PBXGroup; 292 | children = ( 293 | 832341B51AAA6A8300B99B32 /* libRCTText.a */, 294 | ); 295 | name = Products; 296 | sourceTree = ""; 297 | }; 298 | 83CBB9F61A601CBA00E9B192 = { 299 | isa = PBXGroup; 300 | children = ( 301 | 13B07FAE1A68108700A75B9A /* AppHubStarterProject */, 302 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 303 | 83CBBA001A601CBA00E9B192 /* Products */, 304 | ); 305 | indentWidth = 2; 306 | sourceTree = ""; 307 | tabWidth = 2; 308 | }; 309 | 83CBBA001A601CBA00E9B192 /* Products */ = { 310 | isa = PBXGroup; 311 | children = ( 312 | 13B07F961A680F5B00A75B9A /* AppHubStarterProject.app */, 313 | ); 314 | name = Products; 315 | sourceTree = ""; 316 | }; 317 | /* End PBXGroup section */ 318 | 319 | /* Begin PBXNativeTarget section */ 320 | 13B07F861A680F5B00A75B9A /* AppHubStarterProject */ = { 321 | isa = PBXNativeTarget; 322 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AppHubStarterProject" */; 323 | buildPhases = ( 324 | 13B07F871A680F5B00A75B9A /* Sources */, 325 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 326 | 13B07F8E1A680F5B00A75B9A /* Resources */, 327 | ); 328 | buildRules = ( 329 | ); 330 | dependencies = ( 331 | ); 332 | name = AppHubStarterProject; 333 | productName = "Hello World"; 334 | productReference = 13B07F961A680F5B00A75B9A /* AppHubStarterProject.app */; 335 | productType = "com.apple.product-type.application"; 336 | }; 337 | /* End PBXNativeTarget section */ 338 | 339 | /* Begin PBXProject section */ 340 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 341 | isa = PBXProject; 342 | attributes = { 343 | LastUpgradeCheck = 0700; 344 | ORGANIZATIONNAME = Facebook; 345 | }; 346 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AppHubStarterProject" */; 347 | compatibilityVersion = "Xcode 3.2"; 348 | developmentRegion = English; 349 | hasScannedForEncodings = 0; 350 | knownRegions = ( 351 | en, 352 | Base, 353 | ); 354 | mainGroup = 83CBB9F61A601CBA00E9B192; 355 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 356 | projectDirPath = ""; 357 | projectReferences = ( 358 | { 359 | ProductGroup = 40F718C81C1CB5100040FB3E /* Products */; 360 | ProjectRef = 40F718C71C1CB5100040FB3E /* AppHub.xcodeproj */; 361 | }, 362 | { 363 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; 364 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; 365 | }, 366 | { 367 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; 368 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; 369 | }, 370 | { 371 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; 372 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; 373 | }, 374 | { 375 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; 376 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; 377 | }, 378 | { 379 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; 380 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; 381 | }, 382 | { 383 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; 384 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; 385 | }, 386 | { 387 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; 388 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; 389 | }, 390 | { 391 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; 392 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; 393 | }, 394 | { 395 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */; 396 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; 397 | }, 398 | { 399 | ProductGroup = 146834001AC3E56700842450 /* Products */; 400 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; 401 | }, 402 | ); 403 | projectRoot = ""; 404 | targets = ( 405 | 13B07F861A680F5B00A75B9A /* AppHubStarterProject */, 406 | ); 407 | }; 408 | /* End PBXProject section */ 409 | 410 | /* Begin PBXReferenceProxy section */ 411 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { 412 | isa = PBXReferenceProxy; 413 | fileType = archive.ar; 414 | path = libRCTActionSheet.a; 415 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; 416 | sourceTree = BUILT_PRODUCTS_DIR; 417 | }; 418 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { 419 | isa = PBXReferenceProxy; 420 | fileType = archive.ar; 421 | path = libRCTGeolocation.a; 422 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; 423 | sourceTree = BUILT_PRODUCTS_DIR; 424 | }; 425 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { 426 | isa = PBXReferenceProxy; 427 | fileType = archive.ar; 428 | path = libRCTImage.a; 429 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; 430 | sourceTree = BUILT_PRODUCTS_DIR; 431 | }; 432 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { 433 | isa = PBXReferenceProxy; 434 | fileType = archive.ar; 435 | path = libRCTNetwork.a; 436 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; 437 | sourceTree = BUILT_PRODUCTS_DIR; 438 | }; 439 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { 440 | isa = PBXReferenceProxy; 441 | fileType = archive.ar; 442 | path = libRCTVibration.a; 443 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; 444 | sourceTree = BUILT_PRODUCTS_DIR; 445 | }; 446 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { 447 | isa = PBXReferenceProxy; 448 | fileType = archive.ar; 449 | path = libRCTSettings.a; 450 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; 451 | sourceTree = BUILT_PRODUCTS_DIR; 452 | }; 453 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { 454 | isa = PBXReferenceProxy; 455 | fileType = archive.ar; 456 | path = libRCTWebSocket.a; 457 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; 458 | sourceTree = BUILT_PRODUCTS_DIR; 459 | }; 460 | 146834041AC3E56700842450 /* libReact.a */ = { 461 | isa = PBXReferenceProxy; 462 | fileType = archive.ar; 463 | path = libReact.a; 464 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; 465 | sourceTree = BUILT_PRODUCTS_DIR; 466 | }; 467 | 40F718CF1C1CB5100040FB3E /* libAppHub.a */ = { 468 | isa = PBXReferenceProxy; 469 | fileType = archive.ar; 470 | path = libAppHub.a; 471 | remoteRef = 40F718CE1C1CB5100040FB3E /* PBXContainerItemProxy */; 472 | sourceTree = BUILT_PRODUCTS_DIR; 473 | }; 474 | 40F718D11C1CB5100040FB3E /* AppHub.xctest */ = { 475 | isa = PBXReferenceProxy; 476 | fileType = wrapper.cfbundle; 477 | path = AppHub.xctest; 478 | remoteRef = 40F718D01C1CB5100040FB3E /* PBXContainerItemProxy */; 479 | sourceTree = BUILT_PRODUCTS_DIR; 480 | }; 481 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { 482 | isa = PBXReferenceProxy; 483 | fileType = archive.ar; 484 | path = libRCTLinking.a; 485 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; 486 | sourceTree = BUILT_PRODUCTS_DIR; 487 | }; 488 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { 489 | isa = PBXReferenceProxy; 490 | fileType = archive.ar; 491 | path = libRCTText.a; 492 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; 493 | sourceTree = BUILT_PRODUCTS_DIR; 494 | }; 495 | /* End PBXReferenceProxy section */ 496 | 497 | /* Begin PBXResourcesBuildPhase section */ 498 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 499 | isa = PBXResourcesBuildPhase; 500 | buildActionMask = 2147483647; 501 | files = ( 502 | 406A9B9C1BF3F4780083E538 /* main.jsbundle in Resources */, 503 | 400C2F581BA4B5AA0003A96D /* LaunchScreen.xib in Resources */, 504 | 400C2F591BA4B5AA0003A96D /* Images.xcassets in Resources */, 505 | ); 506 | runOnlyForDeploymentPostprocessing = 0; 507 | }; 508 | /* End PBXResourcesBuildPhase section */ 509 | 510 | /* Begin PBXSourcesBuildPhase section */ 511 | 13B07F871A680F5B00A75B9A /* Sources */ = { 512 | isa = PBXSourcesBuildPhase; 513 | buildActionMask = 2147483647; 514 | files = ( 515 | 400C2F5C1BA4B5AA0003A96D /* main.m in Sources */, 516 | 400C2F561BA4B5AA0003A96D /* AppDelegate.m in Sources */, 517 | ); 518 | runOnlyForDeploymentPostprocessing = 0; 519 | }; 520 | /* End PBXSourcesBuildPhase section */ 521 | 522 | /* Begin PBXVariantGroup section */ 523 | 400C2F501BA4B5AA0003A96D /* LaunchScreen.xib */ = { 524 | isa = PBXVariantGroup; 525 | children = ( 526 | 400C2F511BA4B5AA0003A96D /* Base */, 527 | ); 528 | name = LaunchScreen.xib; 529 | sourceTree = ""; 530 | }; 531 | /* End PBXVariantGroup section */ 532 | 533 | /* Begin XCBuildConfiguration section */ 534 | 13B07F941A680F5B00A75B9A /* Debug */ = { 535 | isa = XCBuildConfiguration; 536 | buildSettings = { 537 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 538 | FRAMEWORK_SEARCH_PATHS = ( 539 | "$(inherited)", 540 | "$(PROJECT_DIR)/AppHubStarterProject", 541 | "$(PROJECT_DIR)", 542 | "$(SRCROOT)/../node_modules/apphub/**", 543 | ); 544 | HEADER_SEARCH_PATHS = ( 545 | "$(inherited)", 546 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 547 | "$(SRCROOT)/../node_modules/react-native/React/**", 548 | "$(SRCROOT)/../node_modules/AppHub/AppHub/**", 549 | ); 550 | INFOPLIST_FILE = "$(SRCROOT)/AppHubStarterProject/Info.plist"; 551 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 552 | OTHER_LDFLAGS = "-ObjC"; 553 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 554 | PRODUCT_NAME = AppHubStarterProject; 555 | }; 556 | name = Debug; 557 | }; 558 | 13B07F951A680F5B00A75B9A /* Release */ = { 559 | isa = XCBuildConfiguration; 560 | buildSettings = { 561 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 562 | FRAMEWORK_SEARCH_PATHS = ( 563 | "$(inherited)", 564 | "$(PROJECT_DIR)/AppHubStarterProject", 565 | "$(PROJECT_DIR)", 566 | "$(SRCROOT)/../node_modules/apphub/**", 567 | ); 568 | HEADER_SEARCH_PATHS = ( 569 | "$(inherited)", 570 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 571 | "$(SRCROOT)/../node_modules/react-native/React/**", 572 | "$(SRCROOT)/../node_modules/AppHub/AppHub/**", 573 | ); 574 | INFOPLIST_FILE = "$(SRCROOT)/AppHubStarterProject/Info.plist"; 575 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 576 | OTHER_LDFLAGS = "-ObjC"; 577 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 578 | PRODUCT_NAME = AppHubStarterProject; 579 | }; 580 | name = Release; 581 | }; 582 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 583 | isa = XCBuildConfiguration; 584 | buildSettings = { 585 | ALWAYS_SEARCH_USER_PATHS = NO; 586 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 587 | CLANG_CXX_LIBRARY = "libc++"; 588 | CLANG_ENABLE_MODULES = YES; 589 | CLANG_ENABLE_OBJC_ARC = YES; 590 | CLANG_WARN_BOOL_CONVERSION = YES; 591 | CLANG_WARN_CONSTANT_CONVERSION = YES; 592 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 593 | CLANG_WARN_EMPTY_BODY = YES; 594 | CLANG_WARN_ENUM_CONVERSION = YES; 595 | CLANG_WARN_INT_CONVERSION = YES; 596 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 597 | CLANG_WARN_UNREACHABLE_CODE = YES; 598 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 599 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 600 | COPY_PHASE_STRIP = NO; 601 | ENABLE_STRICT_OBJC_MSGSEND = YES; 602 | ENABLE_TESTABILITY = YES; 603 | GCC_C_LANGUAGE_STANDARD = gnu99; 604 | GCC_DYNAMIC_NO_PIC = NO; 605 | GCC_OPTIMIZATION_LEVEL = 0; 606 | GCC_PREPROCESSOR_DEFINITIONS = ( 607 | "DEBUG=1", 608 | "$(inherited)", 609 | ); 610 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 611 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 612 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 613 | GCC_WARN_UNDECLARED_SELECTOR = YES; 614 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 615 | GCC_WARN_UNUSED_FUNCTION = YES; 616 | GCC_WARN_UNUSED_VARIABLE = YES; 617 | HEADER_SEARCH_PATHS = ( 618 | "$(inherited)", 619 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 620 | "$(SRCROOT)/../node_modules/react-native/React/**", 621 | ); 622 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 623 | MTL_ENABLE_DEBUG_INFO = YES; 624 | ONLY_ACTIVE_ARCH = YES; 625 | SDKROOT = iphoneos; 626 | }; 627 | name = Debug; 628 | }; 629 | 83CBBA211A601CBA00E9B192 /* Release */ = { 630 | isa = XCBuildConfiguration; 631 | buildSettings = { 632 | ALWAYS_SEARCH_USER_PATHS = NO; 633 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 634 | CLANG_CXX_LIBRARY = "libc++"; 635 | CLANG_ENABLE_MODULES = YES; 636 | CLANG_ENABLE_OBJC_ARC = YES; 637 | CLANG_WARN_BOOL_CONVERSION = YES; 638 | CLANG_WARN_CONSTANT_CONVERSION = YES; 639 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 640 | CLANG_WARN_EMPTY_BODY = YES; 641 | CLANG_WARN_ENUM_CONVERSION = YES; 642 | CLANG_WARN_INT_CONVERSION = YES; 643 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 644 | CLANG_WARN_UNREACHABLE_CODE = YES; 645 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 646 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 647 | COPY_PHASE_STRIP = YES; 648 | ENABLE_NS_ASSERTIONS = NO; 649 | ENABLE_STRICT_OBJC_MSGSEND = YES; 650 | GCC_C_LANGUAGE_STANDARD = gnu99; 651 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 652 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 653 | GCC_WARN_UNDECLARED_SELECTOR = YES; 654 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 655 | GCC_WARN_UNUSED_FUNCTION = YES; 656 | GCC_WARN_UNUSED_VARIABLE = YES; 657 | HEADER_SEARCH_PATHS = ( 658 | "$(inherited)", 659 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 660 | "$(SRCROOT)/../node_modules/react-native/React/**", 661 | ); 662 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 663 | MTL_ENABLE_DEBUG_INFO = NO; 664 | SDKROOT = iphoneos; 665 | VALIDATE_PRODUCT = YES; 666 | }; 667 | name = Release; 668 | }; 669 | /* End XCBuildConfiguration section */ 670 | 671 | /* Begin XCConfigurationList section */ 672 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AppHubStarterProject" */ = { 673 | isa = XCConfigurationList; 674 | buildConfigurations = ( 675 | 13B07F941A680F5B00A75B9A /* Debug */, 676 | 13B07F951A680F5B00A75B9A /* Release */, 677 | ); 678 | defaultConfigurationIsVisible = 0; 679 | defaultConfigurationName = Release; 680 | }; 681 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AppHubStarterProject" */ = { 682 | isa = XCConfigurationList; 683 | buildConfigurations = ( 684 | 83CBBA201A601CBA00E9B192 /* Debug */, 685 | 83CBBA211A601CBA00E9B192 /* Release */, 686 | ); 687 | defaultConfigurationIsVisible = 0; 688 | defaultConfigurationName = Release; 689 | }; 690 | /* End XCConfigurationList section */ 691 | }; 692 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 693 | } 694 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject.xcodeproj/xcshareddata/xcschemes/AppHubStarterProject.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 99 | 105 | 106 | 107 | 108 | 110 | 111 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import "AppHub.h" 11 | #import "AppDelegate.h" 12 | 13 | #import "RCTBridge.h" 14 | #import "RCTJavaScriptLoader.h" 15 | #import "RCTRootView.h" 16 | 17 | @interface AppDelegate() 18 | 19 | @end 20 | 21 | @implementation AppDelegate { 22 | RCTBridge *_bridge; 23 | } 24 | 25 | - (BOOL)application:(__unused UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 26 | { 27 | // TODO: replace "123" with your Application ID from the AppHub dashboard. 28 | [AppHub setApplicationID:@"123"]; 29 | 30 | _bridge = [[RCTBridge alloc] initWithDelegate:self 31 | launchOptions:launchOptions]; 32 | 33 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:_bridge 34 | moduleName:@"AppHubStarterProject" 35 | initialProperties:nil]; 36 | 37 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 38 | UIViewController *rootViewController = [UIViewController new]; 39 | rootViewController.view = rootView; 40 | self.window.rootViewController = rootViewController; 41 | [self.window makeKeyAndVisible]; 42 | 43 | // Register a callback for when a new build becomes available. 44 | [[NSNotificationCenter defaultCenter] addObserver:self 45 | selector:@selector(newBuildDidBecomeAvailable:) 46 | name:AHBuildManagerDidMakeBuildAvailableNotification 47 | object:nil]; 48 | 49 | return YES; 50 | } 51 | 52 | #pragma mark - RCTBridgeDelegate 53 | 54 | - (NSURL *)sourceURLForBridge:(__unused RCTBridge *)bridge 55 | { 56 | NSURL *sourceURL; 57 | 58 | /** 59 | * Loading JavaScript code - uncomment the one you want. 60 | * 61 | * OPTION 1 62 | * Load from development server. Start the server from the repository root: 63 | * 64 | * $ react-native start 65 | * 66 | * To run on device, change `localhost` to the IP address of your computer 67 | * (you can get this by typing `ifconfig` into the terminal and selecting the 68 | * `inet` value under `en0:`) and make sure your computer and iOS device are 69 | * on the same Wi-Fi network. 70 | */ 71 | 72 | // sourceURL = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 73 | 74 | /** 75 | * OPTION 2 - AppHub 76 | * 77 | * Load cached code and images from AppHub. Use this when deploying to test 78 | * users and the App Store. 79 | * 80 | * Make sure to re-generate the static bundle by navigating to your Xcode project 81 | * folder and running 82 | * 83 | * $ react-native bundle --entry-file index.ios.js --platform ios --dev true --bundle-output iOS/main.jsbundle 84 | * 85 | */ 86 | 87 | AHBuild *build = [[AppHub buildManager] currentBuild]; 88 | sourceURL = [build.bundle URLForResource:@"main" 89 | withExtension:@"jsbundle"]; 90 | 91 | return sourceURL; 92 | } 93 | 94 | - (void)loadSourceForBridge:(RCTBridge *)bridge 95 | withBlock:(RCTSourceLoadBlock)loadCallback 96 | { 97 | [RCTJavaScriptLoader loadBundleAtURL:[self sourceURLForBridge:bridge] 98 | onComplete:loadCallback]; 99 | } 100 | 101 | #pragma mark - NSNotificationCenter 102 | 103 | -(void) newBuildDidBecomeAvailable:(NSNotification *)notification { 104 | // Show an alert view when a new build becomes available. The user can choose to "Update" the app, or "Cancel". 105 | // If the user presses "Cancel", their app will update when they close the app. 106 | 107 | AHBuild *build = notification.userInfo[AHBuildManagerBuildKey]; 108 | NSString *alertMessage = [NSString stringWithFormat:@"There's a new update available.\n\nUpdate description:\n\n %@", build.buildDescription]; 109 | 110 | UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Great news!" 111 | message:alertMessage 112 | delegate:self 113 | cancelButtonTitle:@"Cancel" 114 | otherButtonTitles:@"Update", nil]; 115 | 116 | dispatch_async(dispatch_get_main_queue(), ^{ 117 | // Show the alert on the main thread. 118 | [alert show]; 119 | }); 120 | } 121 | 122 | #pragma mark - UIAlertViewDelegate 123 | 124 | -(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 125 | if (buttonIndex == 1) { 126 | // The user pressed "update". 127 | [_bridge reload]; 128 | } 129 | } 130 | 131 | @end -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/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 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSApplicationCategoryType 24 | 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | 32 | UILaunchStoryboardName 33 | LaunchScreen 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | 38 | UISupportedInterfaceOrientations 39 | 40 | UIInterfaceOrientationPortrait 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /iOS/AppHubStarterProject/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /index.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample AppHub app 3 | * https://apphub.io 4 | */ 5 | 'use strict'; 6 | 7 | var React = require('react-native'); 8 | var { 9 | AppRegistry, 10 | StyleSheet, 11 | Text, 12 | View, 13 | } = React; 14 | 15 | var AppHubStarterProject = React.createClass({ 16 | render: function() { 17 | return ( 18 | 19 | 20 | Welcome to AppHub! 21 | 22 | 23 | To get started, edit index.ios.js 24 | 25 | 26 | Press Cmd+R to reload,{'\n'} 27 | Cmd+D or shake for dev menu 28 | 29 | 30 | ); 31 | } 32 | }); 33 | 34 | var styles = StyleSheet.create({ 35 | container: { 36 | flex: 1, 37 | justifyContent: 'center', 38 | alignItems: 'center', 39 | backgroundColor: 'white', 40 | }, 41 | welcome: { 42 | fontSize: 20, 43 | textAlign: 'center', 44 | margin: 10, 45 | }, 46 | instructions: { 47 | textAlign: 'center', 48 | color: '#333333', 49 | marginBottom: 5, 50 | }, 51 | }); 52 | 53 | AppRegistry.registerComponent('AppHubStarterProject', () => AppHubStarterProject); 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AppHubStarterProject", 3 | "version": "0.0.2", 4 | "private": true, 5 | "scripts": { 6 | "start": "node_modules/react-native/packager/packager.sh" 7 | }, 8 | "dependencies": { 9 | "apphub": "^0.3.3", 10 | "react-native": "^0.14.2" 11 | } 12 | } 13 | --------------------------------------------------------------------------------