点击‘点击这里检查更新’提示更新失败



  • 仿照文档写了demo,出现的问题是点击点“击这里检查更新”这会弹出更新失败,为什么 ,是哪里的错误啊,求帮忙


  • administrators

    请提供尽可能详细的错误说明(应用界面的报错截图、涉及到的代码、chrome控制台的输出信息,adb logcat的日志等等



  • 嗯嗯
    这是xcode的log信息:
    2016-05-16 10:58:50.703 [info][tid:com.facebook.react.JavaScript] Running application "TestProject" with appParams: {"rootTag":1,"initialProps":{}}. DEV === true, development-level warning are ON, performance optimizations are OFF
    我的代码都是照着文档写的:
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
    jsCodeLocation=[RCTHotUpdate bundleURL];
    js代码:
    import React, {
    Component,
    } from 'react';

    import {
    AppRegistry,
    StyleSheet,
    Platform,
    Text,
    View,
    Alert,
    TouchableOpacity,
    Linking,
    } from 'react-native';

    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 TestProject extends Component {
    componentWillMount(){
    if (isFirstTime) {
    Alert.alert('提示', '这是当前版本第一次启动,是否要模拟启动失败?失败将回滚到上一版本', [
    {text: '是', onPress: ()=>{throw new Error('模拟启动失败,请重启应用')}},
    {text: '否', onPress: ()=>{markSuccess()}},
    ]);
    } else if (isRolledBack) {
    Alert.alert('提示', '刚刚更新失败了,版本被回滚.');
    }
    }
    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('提示', '更新失败.');
    });
    };
    render() {
    return (
    <View style={styles.container}>
    <Text style={styles.welcome}>
    欢迎使用热更新服务
    </Text>
    <Text style={styles.instructions}>
    这是版本一 {'\n'}
    当前包版本号: {packageVersion}{'\n'}
    当前版本Hash: {currentVersion||'(空)'}{'\n'}
    </Text>
    <TouchableOpacity onPress={this.checkUpdate}>
    <Text style={styles.instructions}>
    点击这里检查更新
    </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,
    },
    });

    AppRegistry.registerComponent('TestProject', () => TestProject);

    这是界面的截图:
    0_1463368726241_a.jpg


  • administrators

    chrome控制台的输出信息



  • 我在手机上运行的 浏览器怎么会有log信息,什么意思啊


  • administrators



  • 谢谢 大神能帮忙回答一下这个吗 http://bbs.reactnative.cn/topic/1182/热更新思路困惑


登录后回复