我正在尝试使用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>
)
}
知道如何解决吗?