更新本机应用程序与代码推送反应

时间:2017-09-21 15:10:56

标签: react-native code-push react-native-code-push

我正在尝试使用code-push更新我的应用。我的索引文件中有下一个code-push选项:

let codePushOptions = {
    checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
    installMode: codePush.InstallMode.ON_NEXT_RESUME,
    minimumBackgroundDuration: 60 * 5
};

MainApp = codePush(codePushOptions)(Item);
export default MainApp;

因此,在每个应用resume上都会检查是否有更新,但更新将安装在next app resume上。

但是我想在主屏幕上向用户显示一个按钮,如果有可用的更新可用,他们可以在点击按钮时手动安装。

问题是按钮显示在主屏幕上,如果更新仍在后台下载,他们可以看到它,如果他们在下载过程中点击,则没有任何反应。只有在下载更新时,单击按钮才会安装它。我尝试避免在下载更新期间显示该按钮。

我只想在完全下载更新时显示该按钮。

我检查componentDidMount中的更新是否可用,如下所示:

checkForNewUpdate(){
        let self = this;
        codePush.checkForUpdate().then(update => {
            if (!update) {
                codePush.getUpdateMetadata(codePush.UpdateState.PENDING).then((data) => {
                    if (data) {
                        self.setState({updateAvailable: true, checkingForUpdate: false})
                    }else{
                        self.setState({updateAvailable: false, checkingForUpdate: false})
                    }
                });
            }else{
                self.setState({updateAvailable: true, checkingForUpdate: false})
            }
        })
    }

我根据状态显示按钮如下:

if(this.state.checkingForUpdate){
    return (
        <View style={{paddingTop: 10, paddingBottom: 10, alignItems: 'center'}}>
            <Text style={{color: s.success, fontSize: 12}}>{gettext("Checking for update...")}</Text>
        </View>
    )
}

if (this.state.updateAvailable){
    return (
        <View style={{flexDirection: "row", alignItems: "center", justifyContent: "center", padding: 5, backgroundColor: s.success}}>
            <Text style={styles.updateText}>{gettext("Update available")}</Text>
            <TouchableHighlight style={styles.updateButton} underlayColor={"transparent"} onPress={this.handleUpdate.bind(this)}>
                <Text style={styles.updateButtonText}>{gettext("Click to install")}</Text>
            </TouchableHighlight>
        </View>
    )
}

知道怎么解决吗?

0 个答案:

没有答案