1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

124 lines
3.2 KiB
JavaScript
Raw Normal View History

2016-03-31 16:22:47 +08:00
/**
* Sample React Native App
* https://github.com/facebook/react-native
*/
'use strict';
import React, {
AppRegistry,
Component,
StyleSheet,
2016-04-06 09:42:34 +08:00
Platform,
2016-03-31 16:22:47 +08:00
Text,
View,
2016-04-06 09:42:34 +08:00
Alert,
2016-03-31 16:22:47 +08:00
TouchableOpacity,
2016-04-06 09:42:34 +08:00
Linking,
Image,
2016-03-31 16:22:47 +08:00
} from 'react-native';
2016-04-06 09:42:34 +08:00
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('提示', '检查更新失败.');
});
};
2016-03-31 16:22:47 +08:00
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
2016-04-06 09:42:34 +08:00
欢迎使用热更新服务
2016-03-31 16:22:47 +08:00
</Text>
2016-04-06 09:42:34 +08:00
<Image
resizeMode = {'contain'}
source = {require('./assets/shoucang.png')}
style = {styles.image}
/>
2016-03-31 16:22:47 +08:00
<Text style={styles.instructions}>
2016-04-06 09:42:34 +08:00
这是版本一 {'\n'}
当前包版本号: {packageVersion}{'\n'}
当前版本Hash: {currentVersion||'(空)'}{'\n'}
2016-03-31 16:22:47 +08:00
</Text>
2016-04-06 09:42:34 +08:00
<TouchableOpacity onPress={this.checkUpdate}>
2016-03-31 16:22:47 +08:00
<Text style={styles.instructions}>
2016-04-06 09:42:34 +08:00
点击这里检查更新
2016-03-31 16:22:47 +08:00
</Text>
</TouchableOpacity>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
2016-04-06 09:42:34 +08:00
image : {
},
2016-03-31 16:22:47 +08:00
});
2016-04-06 09:42:34 +08:00
AppRegistry.registerComponent('testHotUpdate', () => MyProject);