mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	bug fixed
This commit is contained in:
		| @@ -119,6 +119,7 @@ android { | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     compile project(':react-native-update') | ||||
|     compile fileTree(dir: "libs", include: ["*.jar"]) | ||||
|     compile "com.android.support:appcompat-v7:23.0.1" | ||||
|     compile "com.facebook.react:react-native:0.20.+" | ||||
|   | ||||
| @@ -1,3 +1,5 @@ | ||||
| rootProject.name = 'testHotUpdate' | ||||
|  | ||||
| include ':app' | ||||
| include ':react-native-update' | ||||
| project(':react-native-update').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-update/android') | ||||
|   | ||||
| @@ -22,8 +22,9 @@ | ||||
| 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||||
| 		146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; | ||||
| 		832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; | ||||
| 		9F394D8C1C7C26C700C794C0 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F394D8B1C7C26C700C794C0 /* libz.tbd */; }; | ||||
| 		9F394D8D1C7C2DA500C794C0 /* libRCTHotUpdate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F394D4E1C7C25C400C794C0 /* libRCTHotUpdate.a */; }; | ||||
| 		9FED04301CB41E8F002487EC /* libbz2.1.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FED042F1CB41E8F002487EC /* libbz2.1.0.tbd */; }; | ||||
| 		9FED04321CB41EC2002487EC /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FED04311CB41EC2002487EC /* libz.tbd */; }; | ||||
| 		D7FABDD031854D58B63B06A4 /* libRCTHotUpdate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 855A53CDD4634785BD0AF87F /* libRCTHotUpdate.a */; }; | ||||
| /* End PBXBuildFile section */ | ||||
|  | ||||
| /* Begin PBXContainerItemProxy section */ | ||||
| @@ -104,9 +105,9 @@ | ||||
| 			remoteGlobalIDString = 58B5119B1A9E6C1200147676; | ||||
| 			remoteInfo = RCTText; | ||||
| 		}; | ||||
| 		9F394D4D1C7C25C400C794C0 /* PBXContainerItemProxy */ = { | ||||
| 		9FED04251CB41D58002487EC /* PBXContainerItemProxy */ = { | ||||
| 			isa = PBXContainerItemProxy; | ||||
| 			containerPortal = 9F394D471C7C25C400C794C0 /* RCTHotUpdate.xcodeproj */; | ||||
| 			containerPortal = 8295F7636DB14CAEA56E5A2B /* RCTHotUpdate.xcodeproj */; | ||||
| 			proxyType = 2; | ||||
| 			remoteGlobalIDString = 91C5EFFF1C76ECA90037E727; | ||||
| 			remoteInfo = RCTHotUpdate; | ||||
| @@ -134,9 +135,11 @@ | ||||
| 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = testHotUpdate/main.m; sourceTree = "<group>"; }; | ||||
| 		146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; }; | ||||
| 		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; }; | ||||
| 		8295F7636DB14CAEA56E5A2B /* RCTHotUpdate.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTHotUpdate.xcodeproj; path = "../node_modules/react-native-update/ios/RCTHotUpdate.xcodeproj"; sourceTree = "<group>"; }; | ||||
| 		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; }; | ||||
| 		9F394D471C7C25C400C794C0 /* RCTHotUpdate.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTHotUpdate.xcodeproj; path = "../node_modules/react-native-update/ios/RCTHotUpdate.xcodeproj"; sourceTree = "<group>"; }; | ||||
| 		9F394D8B1C7C26C700C794C0 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; | ||||
| 		855A53CDD4634785BD0AF87F /* libRCTHotUpdate.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTHotUpdate.a; sourceTree = "<group>"; }; | ||||
| 		9FED042F1CB41E8F002487EC /* libbz2.1.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.1.0.tbd; path = usr/lib/libbz2.1.0.tbd; sourceTree = SDKROOT; }; | ||||
| 		9FED04311CB41EC2002487EC /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; | ||||
| /* End PBXFileReference section */ | ||||
|  | ||||
| /* Begin PBXFrameworksBuildPhase section */ | ||||
| @@ -151,8 +154,8 @@ | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				9F394D8D1C7C2DA500C794C0 /* libRCTHotUpdate.a in Frameworks */, | ||||
| 				9F394D8C1C7C26C700C794C0 /* libz.tbd in Frameworks */, | ||||
| 				9FED04321CB41EC2002487EC /* libz.tbd in Frameworks */, | ||||
| 				9FED04301CB41E8F002487EC /* libbz2.1.0.tbd in Frameworks */, | ||||
| 				146834051AC3E58100842450 /* libReact.a in Frameworks */, | ||||
| 				00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, | ||||
| 				00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, | ||||
| @@ -163,6 +166,7 @@ | ||||
| 				832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, | ||||
| 				00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, | ||||
| 				139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, | ||||
| 				D7FABDD031854D58B63B06A4 /* libRCTHotUpdate.a in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -275,7 +279,6 @@ | ||||
| 		832341AE1AAA6A7D00B99B32 /* Libraries */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				9F394D471C7C25C400C794C0 /* RCTHotUpdate.xcodeproj */, | ||||
| 				146833FF1AC3E56700842450 /* React.xcodeproj */, | ||||
| 				00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, | ||||
| 				00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, | ||||
| @@ -286,6 +289,7 @@ | ||||
| 				832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, | ||||
| 				00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, | ||||
| 				139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, | ||||
| 				8295F7636DB14CAEA56E5A2B /* RCTHotUpdate.xcodeproj */, | ||||
| 			); | ||||
| 			name = Libraries; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -301,7 +305,8 @@ | ||||
| 		83CBB9F61A601CBA00E9B192 = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				9F394D8B1C7C26C700C794C0 /* libz.tbd */, | ||||
| 				9FED04311CB41EC2002487EC /* libz.tbd */, | ||||
| 				9FED042F1CB41E8F002487EC /* libbz2.1.0.tbd */, | ||||
| 				13B07FAE1A68108700A75B9A /* testHotUpdate */, | ||||
| 				832341AE1AAA6A7D00B99B32 /* Libraries */, | ||||
| 				00E356EF1AD99517003FC87E /* testHotUpdateTests */, | ||||
| @@ -320,10 +325,10 @@ | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		9F394D481C7C25C400C794C0 /* Products */ = { | ||||
| 		9FED04201CB41D58002487EC /* Products */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				9F394D4E1C7C25C400C794C0 /* libRCTHotUpdate.a */, | ||||
| 				9FED04261CB41D58002487EC /* libRCTHotUpdate.a */, | ||||
| 			); | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -373,7 +378,7 @@ | ||||
| 		83CBB9F71A601CBA00E9B192 /* Project object */ = { | ||||
| 			isa = PBXProject; | ||||
| 			attributes = { | ||||
| 				LastUpgradeCheck = 0610; | ||||
| 				LastUpgradeCheck = 610; | ||||
| 				ORGANIZATIONNAME = Facebook; | ||||
| 				TargetAttributes = { | ||||
| 					00E356ED1AD99517003FC87E = { | ||||
| @@ -403,8 +408,8 @@ | ||||
| 					ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; | ||||
| 				}, | ||||
| 				{ | ||||
| 					ProductGroup = 9F394D481C7C25C400C794C0 /* Products */; | ||||
| 					ProjectRef = 9F394D471C7C25C400C794C0 /* RCTHotUpdate.xcodeproj */; | ||||
| 					ProductGroup = 9FED04201CB41D58002487EC /* Products */; | ||||
| 					ProjectRef = 8295F7636DB14CAEA56E5A2B /* RCTHotUpdate.xcodeproj */; | ||||
| 				}, | ||||
| 				{ | ||||
| 					ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; | ||||
| @@ -518,11 +523,11 @@ | ||||
| 			remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; | ||||
| 			sourceTree = BUILT_PRODUCTS_DIR; | ||||
| 		}; | ||||
| 		9F394D4E1C7C25C400C794C0 /* libRCTHotUpdate.a */ = { | ||||
| 		9FED04261CB41D58002487EC /* libRCTHotUpdate.a */ = { | ||||
| 			isa = PBXReferenceProxy; | ||||
| 			fileType = archive.ar; | ||||
| 			path = libRCTHotUpdate.a; | ||||
| 			remoteRef = 9F394D4D1C7C25C400C794C0 /* PBXContainerItemProxy */; | ||||
| 			remoteRef = 9FED04251CB41D58002487EC /* PBXContainerItemProxy */; | ||||
| 			sourceTree = BUILT_PRODUCTS_DIR; | ||||
| 		}; | ||||
| /* End PBXReferenceProxy section */ | ||||
| @@ -619,6 +624,10 @@ | ||||
| 				INFOPLIST_FILE = testHotUpdateTests/Info.plist; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 8.2; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				LIBRARY_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"\"$(SRCROOT)/$(TARGET_NAME)\"", | ||||
| 				); | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testHotUpdate.app/testHotUpdate"; | ||||
| 			}; | ||||
| @@ -636,6 +645,10 @@ | ||||
| 				INFOPLIST_FILE = testHotUpdateTests/Info.plist; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 8.2; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				LIBRARY_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"\"$(SRCROOT)/$(TARGET_NAME)\"", | ||||
| 				); | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/testHotUpdate.app/testHotUpdate"; | ||||
| 			}; | ||||
| @@ -650,12 +663,14 @@ | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| 					"$(SRCROOT)/../node_modules/react-native/React/**", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate/**", | ||||
| 				); | ||||
| 				INFOPLIST_FILE = testHotUpdate/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = "-ObjC"; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = com.tdzl.testHotUpdate; | ||||
| 				PRODUCT_NAME = testHotUpdate; | ||||
| 				PROVISIONING_PROFILE = ""; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| @@ -663,16 +678,19 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CODE_SIGN_IDENTITY = "iPhone Distribution: Hangzhou Erica Network Technology Co., Ltd. (4W77ET7ZNV)"; | ||||
| 				HEADER_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| 					"$(SRCROOT)/../node_modules/react-native/React/**", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate/**", | ||||
| 				); | ||||
| 				INFOPLIST_FILE = testHotUpdate/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = "-ObjC"; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = com.tdzl.testHotUpdate; | ||||
| 				PRODUCT_NAME = testHotUpdate; | ||||
| 				PROVISIONING_PROFILE = "e3e045ab-62fc-4c86-bcb3-4d78583e3fe2"; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| @@ -714,6 +732,7 @@ | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| 					"$(SRCROOT)/../node_modules/react-native/React/**", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate/**", | ||||
| 				); | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 7.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = YES; | ||||
| @@ -754,6 +773,7 @@ | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| 					"$(SRCROOT)/../node_modules/react-native/React/**", | ||||
| 					"$(SRCROOT)/../node_modules/react-native-update/ios/RCTHotUpdate/**", | ||||
| 				); | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 7.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 696 B | 
							
								
								
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi@2x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi@2x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi@3x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Example/testHotUpdate/js/assets/shezhi@3x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.8 KiB | 
| @@ -7,39 +7,91 @@ import React, { | ||||
|   AppRegistry, | ||||
|   Component, | ||||
|   StyleSheet, | ||||
|   Platform, | ||||
|   Text, | ||||
|   View, | ||||
|   Alert, | ||||
|   TouchableOpacity, | ||||
|   Linking, | ||||
|   Image, | ||||
| } from 'react-native'; | ||||
|  | ||||
| import {downloadFile, reloadUpdate} from 'react-native-update' | ||||
| import { | ||||
|   isFirstTime, | ||||
|   isRolledBack, | ||||
|   packageVersion, | ||||
|   currentVersion, | ||||
|   checkUpdate, | ||||
|   downloadUpdate, | ||||
|   switchVersion, | ||||
|   switchVersionLater, | ||||
|   markSuccess, | ||||
| } from 'react-native-update'; | ||||
|  | ||||
| import _updateConfig from '../update.json'; | ||||
| const {appKey} = _updateConfig[Platform.OS]; | ||||
|  | ||||
| class MyProject extends Component { | ||||
|   componentWillMount(){ | ||||
|     if (isRolledBack) { | ||||
|       Alert.alert('提示', '刚刚更新失败了,版本被回滚.'); | ||||
|     } else if (isFirstTime) { | ||||
|       Alert.alert('提示', '这是当前版本第一次启动,是否要模拟启动失败?将回滚到上一版本', [ | ||||
|         {text: '是', onPress: ()=>{throw new Error('模拟启动失败,请重启应用')}}, | ||||
|         {text: '否', onPress: ()=>{markSuccess()}}, | ||||
|       ]); | ||||
|     }; | ||||
|   } | ||||
|   doUpdate = info => { | ||||
|     downloadUpdate(info).then(hash => { | ||||
|       Alert.alert('提示', '下载完毕,是否重启应用?', [ | ||||
|         {text: '是', onPress: ()=>{switchVersion(hash);}}, | ||||
|         {text: '否',}, | ||||
|         {text: '下次启动时', onPress: ()=>{switchVersionLater(hash);}}, | ||||
|       ]); | ||||
|     }).catch(err => { | ||||
|       Alert.alert('提示', '更新失败.'); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   checkUpdate = () => { | ||||
|     checkUpdate(appKey).then(info => { | ||||
|       if (info.expired) { | ||||
|         Alert.alert('提示', '您的应用版本已更新,请前往应用商店下载新的版本', [ | ||||
|           {text: '确定', onPress: ()=>{info.downloadUrl && Linking.openURL(info.downloadUrl)}}, | ||||
|         ]); | ||||
|       } else if (info.upToDate) { | ||||
|         Alert.alert('提示', '您的应用版本已是最新.'); | ||||
|       } else { | ||||
|         Alert.alert('提示', '检查到新的版本'+info.name+',是否下载?\n'+ info.description, [ | ||||
|           {text: '是', onPress: ()=>{this.doUpdate(info)}}, | ||||
|           {text: '否',}, | ||||
|         ]); | ||||
|       } | ||||
|     }).catch(err => { | ||||
|       Alert.alert('提示', '检查更新失败.'); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
| class testHotUpdate extends Component { | ||||
|   render() { | ||||
|     return ( | ||||
|       <View style={styles.container}> | ||||
|         <Text style={styles.welcome}> | ||||
|           Welcome to React Native! | ||||
|           欢迎使用热更新服务 | ||||
|         </Text> | ||||
|         <Image | ||||
|           resizeMode = {'contain'} | ||||
|           source = {require('./assets/shoucang.png')} | ||||
|           style = {styles.image} | ||||
|         /> | ||||
|         <Text style={styles.instructions}> | ||||
|           To get started, edit index.ios.js | ||||
|           这是版本一 {'\n'} | ||||
|           当前包版本号: {packageVersion}{'\n'} | ||||
|           当前版本Hash: {currentVersion||'(空)'}{'\n'} | ||||
|         </Text> | ||||
|         <TouchableOpacity onPress={ | ||||
|           ()=>{ | ||||
|             downloadFile({updateUrl:'http://7xjhby.com2.z0.glb.qiniucdn.com/ios1.ppk', hashName:'test'}) | ||||
|           } | ||||
|         }> | ||||
|         <TouchableOpacity onPress={this.checkUpdate}> | ||||
|           <Text style={styles.instructions}> | ||||
|             Press To DownloadFile | ||||
|           </Text> | ||||
|         </TouchableOpacity> | ||||
|         <TouchableOpacity onPress={ | ||||
|           ()=>{ | ||||
|             reloadUpdate({hashName:'test'}) | ||||
|           } | ||||
|         }> | ||||
|           <Text style={styles.instructions}> | ||||
|             Press To Reload | ||||
|             点击这里检查更新 | ||||
|           </Text> | ||||
|         </TouchableOpacity> | ||||
|       </View> | ||||
| @@ -64,6 +116,8 @@ const styles = StyleSheet.create({ | ||||
|     color: '#333333', | ||||
|     marginBottom: 5, | ||||
|   }, | ||||
|   image : { | ||||
|   }, | ||||
| }); | ||||
|  | ||||
| AppRegistry.registerComponent('testHotUpdate', () => testHotUpdate); | ||||
| AppRegistry.registerComponent('testHotUpdate', () => MyProject); | ||||
|   | ||||
| @@ -20,6 +20,7 @@ static NSString *const paramLastVersion = @"lastVersion"; | ||||
| static NSString *const paramCurrentVersion = @"currentVersion"; | ||||
| static NSString *const paramIsFirstTime = @"isFirstTime"; | ||||
| static NSString *const paramIsFirstLoadOk = @"isFirstLoadOK"; | ||||
| static NSString *const keyFirstLoadLoadMarked = @"REACTNATIVECN_HOTUPDATE_FIRSTLOADMARKED_KEY"; | ||||
| static NSString *const keyRolledBackMarked = @"REACTNATIVECN_HOTUPDATE_ROLLEDBACKMARKED_KEY"; | ||||
| static NSString *const KeyPackageUpdatedMarked = @"REACTNATIVECN_HOTUPDATE_ISPACKAGEUPDATEDMARKED_KEY"; | ||||
|  | ||||
| @@ -40,6 +41,7 @@ static NSString * const ERROR_FILE_OPERATION = @"file operation error"; | ||||
| // event def | ||||
| static NSString * const EVENT_PROGRESS_DOWNLOAD = @"RCTHotUpdateDownloadProgress"; | ||||
| static NSString * const EVENT_PROGRESS_UNZIP = @"RCTHotUpdateUnzipProgress"; | ||||
| static NSString * const PARAM_PROGRESS_HASHNAME = @"hashname"; | ||||
| static NSString * const PARAM_PROGRESS_RECEIVED = @"received"; | ||||
| static NSString * const PARAM_PROGRESS_TOTAL = @"total"; | ||||
|  | ||||
| @@ -103,6 +105,13 @@ RCT_EXPORT_MODULE(RCTHotUpdate); | ||||
|                 [defaults synchronize]; | ||||
|                 // ...need clear files later | ||||
|             } | ||||
|             else if (isFirstTime){ | ||||
|                 NSMutableDictionary *newInfo = [updateInfo mutableCopy]; | ||||
|                 newInfo[paramIsFirstTime] = @(NO); | ||||
|                 [defaults setObject:newInfo forKey:keyUpdateInfo]; | ||||
|                 [defaults setObject:@(YES) forKey:keyFirstLoadLoadMarked]; | ||||
|                 [defaults synchronize]; | ||||
|             } | ||||
|              | ||||
|             if (loadVersioin.length) { | ||||
|                 NSString *downloadDir = [RCTHotUpdate downloadDir]; | ||||
| @@ -127,15 +136,13 @@ RCT_EXPORT_MODULE(RCTHotUpdate); | ||||
|     ret[@"downloadRootDir"] = [RCTHotUpdate downloadDir]; | ||||
|     ret[@"packageVersion"] = [RCTHotUpdate packageVersion]; | ||||
|     ret[@"isRolledBack"] = [defaults objectForKey:keyRolledBackMarked]; | ||||
|     ret[@"isFirstTime"] = [defaults objectForKey:keyFirstLoadLoadMarked]; | ||||
|     NSDictionary *updateInfo = [defaults dictionaryForKey:keyUpdateInfo]; | ||||
|     ret[@"currentVersion"] = [updateInfo objectForKey:paramCurrentVersion]; | ||||
|     ret[@"isFirstTime"] = [updateInfo objectForKey:paramIsFirstTime]; | ||||
|      | ||||
|     // clear isFirstTime | ||||
|     if (updateInfo) { | ||||
|         NSMutableDictionary *newInfo = [updateInfo mutableCopy]; | ||||
|         newInfo[paramIsFirstTime] = @(NO); | ||||
|         [defaults setObject:newInfo forKey:keyUpdateInfo]; | ||||
|     if ([[defaults objectForKey:keyFirstLoadLoadMarked] boolValue]) { | ||||
|         [defaults setObject:nil forKey:keyFirstLoadLoadMarked]; | ||||
|     } | ||||
|      | ||||
|     // clear rolledbackmark | ||||
| @@ -285,6 +292,7 @@ RCT_EXPORT_METHOD(markSuccuss) | ||||
|     [RCTHotUpdateDownloader download:updateUrl savePath:zipFilePath progressHandler:^(long long receivedBytes, long long totalBytes) { | ||||
|         [self.bridge.eventDispatcher sendAppEventWithName:EVENT_PROGRESS_DOWNLOAD | ||||
|                                                      body:@{ | ||||
|                                                             PARAM_PROGRESS_HASHNAME:hashName, | ||||
|                                                             PARAM_PROGRESS_RECEIVED:[NSNumber numberWithLongLong:receivedBytes], | ||||
|                                                             PARAM_PROGRESS_TOTAL:[NSNumber numberWithLongLong:totalBytes] | ||||
|                                                             }]; | ||||
| @@ -298,6 +306,7 @@ RCT_EXPORT_METHOD(markSuccuss) | ||||
|             [_fileManager unzipFileAtPath:zipFilePath toDestination:unzipFilePath progressHandler:^(NSString *entry,long entryNumber, long total) { | ||||
|                 [self.bridge.eventDispatcher sendAppEventWithName:EVENT_PROGRESS_UNZIP | ||||
|                                                              body:@{ | ||||
|                                                                     PARAM_PROGRESS_HASHNAME:hashName, | ||||
|                                                                     PARAM_PROGRESS_RECEIVED:[NSNumber numberWithLong:entryNumber], | ||||
|                                                                     PARAM_PROGRESS_TOTAL:[NSNumber numberWithLong:total] | ||||
|                                                                     }]; | ||||
|   | ||||
| @@ -103,7 +103,7 @@ completionHandler:(void (^)(NSError *error))completionHandler | ||||
|             NSString *toPath = [toDir stringByAppendingPathComponent:to]; | ||||
|              | ||||
|             NSError *error = nil; | ||||
|             [[NSFileManager defaultManager] moveItemAtPath:fromPath toPath:toPath error:&error]; | ||||
|             [[NSFileManager defaultManager] copyItemAtPath:fromPath toPath:toPath error:&error]; | ||||
|             if (error) { | ||||
|                 if (completionHandler) { | ||||
|                     completionHandler(error); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 lvbingru
					lvbingru