2017-08-22 2 views
5

Ich bin in der ionic3-Anwendung mit dem Problem konfrontiert.Ionic File Transfer Plugin funktioniert nicht in der Produktionsversion

Lassen Sie mich meine Situation im Detail beschreiben: Eigentlich brauche ich Offline-Unterstützung für meine ionische App. Jedes Mal, wenn ich die API anrufe, speichere ich die Daten im lokalen Speicher. und lade auch ein Bild von der API in mein lokales Verzeichnis herunter. so dass ich Daten und Bilder abrufen kann, wenn das Internet von lokalen Ressourcen nicht verfügbar ist.

ich dieses Plugin bin mit Bild vom Server zum lokalen Download: https://ionicframework.com/docs/native/file-transfer/

Es funktioniert gut, wenn ich folgenden Befehl aus:

ionic cordova run android 

Aber es funktioniert nicht, wenn ich folgenden Befehl ausführen :

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

Ich bekomme keine Fehler oder Probleme von der Konsole. Also ich weiß nicht, was ich vermisse. Es ist auch eine Berechtigung für den lokalen Speicher konfiguriert. also Erlaubnis ist kein Problem.

Vielen Dank für Ihre Zeit und Antwort.

+0

Wie Sie sagen, es funktioniert nicht? – Sampath

+0

@Sampath Es wird weder ein Fehler angezeigt noch der Download gestartet. –

+0

@HiteshUpadhyay Entschuldigung, ich kann keine Lösung finden, aber wahrscheinlich können wir etwas wie Pro-Guard verwenden, um zu verhindern, dass Produktionscodes verschleiert werden. – Mohsen

Antwort

5

Endlich finde ich eine Lösung für dieses Problem! bei der ersten sollten Sie dieses Update-Befehle:

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

Und wahrscheinlich irgendwo in Ihrem Code aufrufen Sie alles im Zusammenhang mit File-Transfer-Plugin vor

platform.ready.then()

In meinem Fall: ich einige Service injizieren das schließt eine Zeile wie diese:

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

Und ich änderte es zu diesem:

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

Jetzt funktioniert alles gut.

Weitere Details:

Warum diese Arbeit im Debug-Modus?

Die Antwort ist sehr klar, weil im Debug-Modus Gerät bereit Ereignis eine lange Zeit für Feuer-und File-Transfer genannt nach diesem absolut! Aber im Produktionsmodus, Gerät bereit gefeuert sehr schnell und Dateiübertragung zuvor genannt. Ich hoffe das hilft dir.

+0

Vielen Dank sehr, es hat mir sehr geholfen :) –

Verwandte Themen