2017-08-22 1 views
5

Je suis confronté à un problème lié à l'application ionique3. Permettez-moi de décrire ma situation en détail: En fait, j'ai besoin de soutien hors ligne pour mon application ionique. donc chaque fois que j'appelle l'API, je stocke les données dans le stockage local. et également télécharger l'image de l'API dans mon répertoire local. afin que je puisse aller chercher des données et des images quand Internet n'est pas disponible à partir de ressources locales.Plug-in de transfert de fichiers ioniques ne fonctionnant pas en version de production

J'utilise ce plugin pour télécharger l'image du serveur local: https://ionicframework.com/docs/native/file-transfer/

Il fonctionne bien si je fais tourner commande suivante:

ionic cordova run android 

Mais il ne fonctionne pas quand je lance la commande suivante :

ionic cordova run android --prod 

code:

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer'; 
import { File } from '@ionic-native/file'; 

constructor(private transfer: FileTransfer, private file: File) { } 

const fileTransfer: FileTransferObject = this.transfer.create(); 

download() { 
    const url = 'http://www.example.com/file.pdf'; 
    fileTransfer.download(url, this.file.dataDirectory + 'file.pdf').then((entry) => { 
    console.log('download complete: ' + entry.toURL()); 
    }, (error) => { 
    // handle error 
    }); 
} 

Je ne reçois aucune erreur ou problème de la part de la console. Donc je ne sais pas ce qui me manque. Il y a aussi une permission pour le stockage local bien configuré. la permission n'est donc pas un problème.

Merci à l'avance pour votre temps et réponse.

+0

Comment dites-vous que cela ne fonctionne pas? – Sampath

+0

@Sampath Il ne montre aucune erreur ni ne commence le téléchargement. –

+0

@ HiteshUpadhyay désolé, je ne peux pas trouver de solution, mais nous pouvons probablement utiliser quelque chose comme pro-garde pour empêcher d'obscurcir les codes de production. – Mohsen

Répondre

5

Enfin, je trouve une solution à ce problème! au premier, vous devez mettre à jour cette commandes:

npm i @ionic/[email protected] --save 
npm i [email protected] --save 

Et probablement quelque part dans votre code que vous appelez tout ce qui concerne le transfert de fichier plug-in avant

platform.ready.then()

Dans mon cas: j'injecte un service qui comprennent une ligne comme celui-ci:

this.fileTransfer = this.transfer.create();

Et je l'a changé à ceci:

this.platform.ready().then(() => { 
    // Okay, so the platform is ready and our plugins are available. 
    // Here you can do any higher level native things you might need. 
    this.fileTransfer = this.transfer.create(); 
}); 

Maintenant tout fonctionne bien.

Plus de détails:

Pourquoi ce travail en mode débogage?

la réponse est très claire, car en mode de débogage l'événement de périphérique prêt donne une longue période pour le feu et le transfert de fichiers appelé après cela absolument! Mais en mode production, le périphérique prêt a été déclenché très rapidement et le transfert de fichiers a été appelé auparavant. J'espère que cela t'aidera.

+0

Merci beaucoup, ça m'a beaucoup aidé :) –