2017-06-18 2 views
3

J'essaie de mettre à jour mon application avec le code-push. Mon code est le suivant:Code-push vérifier pour la mise à jour

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> 
     ) 
    } 
} 

Ainsi, ce que je suis en train est de vérifier si une mise à jour disponible en componentDidMount et si elle est, puis mettre à jour l'état et en fonction de ce bouton de mise à jour du spectacle de l'État.

Mais le problème est, quand je pousse le code, et c'est le plus récent code dans l'application, il montre toujours le bouton An update available.

Si je modifie le contenu de mon application et l'envoie au serveur de code push avec code-push release-react AppName ios, le bouton affiche à nouveau, c'est bien. Si je clique dessus, le nouveau contenu est affiché et le bouton disparaît, ce qui est bon.

Mais le problème est que si j'actualise l'application, j'obtiens à nouveau l'ancien contenu et le bouton s'affiche à nouveau. Et si je clique dessus encore, rien ne se passe.

Une idée de ce que je fais mal?

Répondre

0

Le composant doit être encapsulé avec codepush. Je ne l'ai pas vu dans les docs. Here is the link.

Ainsi:

Au lieu de

export default Item; 

il doit être

let codePushOptions = { checkFrequency: codePush.CheckFrequency.MANUAL }; 
MainApp = codePush(codePushOptions)(Item); 
export default MainApp;