Проверка кода на наличие обновлений

Я пытаюсь обновить свое приложение с помощью push-кода. Мой код выглядит следующим образом:

export default class codePushTest extends Component {
    constructor(props) {
        super(props);
        this.state = {
            updateAvailable: false,
            downloadingUpdate: null,
            installingUpdate: null,
            downloadProgress: null,
        }
    }

    componentDidMount() {
        let self = this;
        codePush.checkForUpdate().then(update => {
            if (!update) {
                self.setState({updateAvailable: false})
            }else{
                self.setState({updateAvailable: true})
            }
        })
    }

    handleUpdate() {
        let self = this;
        const checkUpdateStatus = (status) => {
            switch (status) {
                case codePush.SyncStatus.DOWNLOADING_PACKAGE:
                    self.setState({downloadingUpdate: true});
                    break;
                case codePush.SyncStatus.INSTALLING_UPDATE:
                    self.setState({installingUpdate: true, downloadingUpdate: false});
                    break;
                case codePush.SyncStatus.UPDATE_INSTALLED:
                    self.setState({installingUpdate: false, downloadingUpdate: false, updateInstalled: true});
                    break;
            }
        };

        const downloadProgress = (downloadedBytes, totalBytes) => {
            self.setState({downloadProgress: (downloadedBytes / totalBytes) * 100})
        };

        codePush.sync({updateDialog: false, installMode: codePush.InstallMode.IMMEDIATE}, checkUpdateStatus, downloadProgress)
    }

    renderButton(){
        if (this.state.updateAvailable){
            return (
                <View style={{marginTop: 40}}>
                    <TouchableHighlight onPress={this.handleUpdate.bind(this)}>
                        <Text>An update is available.</Text>
                    </TouchableHighlight>
                </View>
            )
        }

    }

    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.welcome}>Welcome message. </Text>
                {this.renderButton()}
            </View>
        )
    }
}

Таким образом, я пытаюсь проверить, есть ли обновление в componentDidMount и если это так, то обновите состояние и в зависимости от этого состояния покажите кнопку обновления.

Но проблема в том, что когда я нажимаю код, и это самый новый код в приложении, он все равно показывает кнопку An update available,

Если я изменю содержимое своего приложения и отправлю его на сервер push-кода с code-push release-react AppName ios, кнопка снова показывает, что это хорошо. Если я нажимаю на него, отображается новый контент, и кнопка исчезает, и это хорошо.

Но проблема в том, что если я обновляю приложение, я снова получаю старый контент, и кнопка снова отображается. И если я нажму на него снова, ничего не произойдет.

Есть идеи, что я делаю не так?

1 ответ

Решение

Компонент должен быть упакован с codepush. Я не видел это в документах. Вот ссылка.

Таким образом:

Вместо

export default Item;

Это должно быть

let codePushOptions = { checkFrequency: codePush.CheckFrequency.MANUAL };
MainApp = codePush(codePushOptions)(Item);
export default MainApp;
Другие вопросы по тегам