0

我正在尝试使用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应用程序恢复中。

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

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

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

我检查更新是否可用,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>
    )
}

知道如何解决吗?

4

0 回答 0