我评论说我正在IONIC 3中开发应用程序,并且正在使用本机文件传输库。
现在要在IOS中下载文件,它不会执行该文件,在android中安装或调试该文件时,它不会执行。
根据离子文档,我正在正确地实现它,并且我不明白为什么或缺少什么,以便IOS可以执行transfer.download
,这是未执行的指令
,我在控制台中收到以下错误:
console.warn:“本机:尝试访问FileTransfer插件,但未安装。
在我下面留下我的代码:
import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';
import { LoadingController } from 'ionic-angular';
declare var cordova: any;
@IonicPage()
@Component({
selector: 'page-liquidaciones',
templateUrl: 'liquidaciones.html',
})
export class LiquidacionesPage {
formLiquidaciones: FormGroup;
public txtCorreoLiquidacion;
rutUsuario: any;
resultado: any;
liquidaciones: any;
liquidacionesSeleccionadas:any={};
loading: any;
storageDirectory: string = '';
//private fileTransfer: FileTransferObject;
//private localPath = '';
constructor(public navCtrl: NavController,
public navParams: NavParams,
private alertCtrl: AlertController,
public formBuilder: FormBuilder,
public kiberKiberpro: KibernumKiberproProvider,
public databaseService: DatabaseServiceProvider,
private transfer: FileTransfer,
private file: File,
private androidPermissions: AndroidPermissions,
public loadingController: LoadingController,
public platform: Platform
){
this.formLiquidaciones = this.formBuilder.group({
txtCorreoLiquidacion: ['', Validators.required]
});
this.platform.ready().then(() => {
if(!this.platform.is('cordova')) {
return false;
}
if (this.platform.is('ios')) {
//this.storageDirectory = this.file.dataDirectory;
this.storageDirectory = cordova.file.dataDirectory;
}
else if(this.platform.is('android')) {
this.storageDirectory = cordova.file.externalRootDirectory + '/Download/';
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE).then(
result => {
if (result.hasPermission) {
// code
} else {
this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE).then(result => {
if (result.hasPermission) {
// code
}
});
}
},
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE)
);
}
else {
return false;
}
});
this.databaseService.getSesion(2).then(result => {
this.rutUsuario = result.valor;
})
.catch( error => {
});
}
DescargarLiquidaciones(){
this.loading = this.loadingController.create({ content: "Descargando Liquidacion(es)..." });
const fileTransfer: FileTransferObject = this.transfer.create();
var enviarLiquidaciones = [];
for(var i in this.liquidacionesSeleccionadas) {
if(this.liquidacionesSeleccionadas[i]) {
enviarLiquidaciones.push(i);
}
}
if(enviarLiquidaciones.length == 0)
{
this.alerta("Debe seleccionar por lo menos una liquidación para que sea descargada.");
}
else
{
this.loading.present();
this.txtCorreoLiquidacion = '';
this.kiberKiberpro.DescargarEnviarLiquidaciones(this.rutUsuario,enviarLiquidaciones, this.txtCorreoLiquidacion).then((res) => {
this.resultado = res;
var respuesta = JSON.parse(this.resultado.data);
let datos: string = JWT(this.resultado.data);
if(respuesta.status == "200") {
let autorizacion = this.resultado.headers;
let nombreArchivo = datos.split("tmp/");
let urlFinal = datos;
fileTransfer.download(urlFinal , this.storageDirectory + nombreArchivo[1]).then((entry) => {
console.log("LLEGA ACA");
this.alerta("Se ha descargado el archivo de manera satisfactoria.");
console.log("LLEGA ACA 2");
this.loading.dismissAll();
console.log("LLEGA ACA 3");
this.databaseService.GuardaSQLlite(1, autorizacion.authorization);
this.navCtrl.setRoot(HomePage);
}, (error) => {
this.alerta("Hubo un error al momento de descargar el archivo. Si el problema persiste favor contactarse al 816 35 12 o 816 35 09.");
this.loading.dismissAll();
});
}
else if (respuesta.status == "201"){
this.alerta("Hubo un problema con el envío de la(s) liquidacion(es) al correo ingresado. Si el problema persiste favor contactarse al 816 35 12 o 816 35 09");
this.loading.dismissAll();
let autorizacion = this.resultado.headers;
this.databaseService.GuardaSQLlite(1, autorizacion.authorization);
}
else if (respuesta.status == "401"){
this.alerta("Token no válido.");
this.loading.dismissAll();
}
else{
this.alerta("Hubo un problema inesperado, Favor intente nuevamente. Si el problema persiste favor contactarse al 816 35 12 o 816 35 09");
this.loading.dismissAll();
}
}, (err) => {
this.alerta("Ha ocurrido un problema, intente nuevamente por favor. Si el error persiste pongase en contacto con el area de soporte.");
this.loading.dismissAll();
});
}
}
我一直很注意您的回答,在此先感谢您的帮助和意见
答案 0 :(得分:0)
我忘了输入以下离子的信息:
离子:
ionic(Ionic CLI):4.1.2(/ usr / local / lib / node_modules / ionic) 离子框架:离子角3.9.2 @ ionic / app-scripts:3.1.10
科尔多瓦:
cordova(Cordova CLI):8.1.1(cordova-lib@8.1.0) Cordova平台:iOS 4.5.4 Cordova插件:cordova-plugin-ionic-keyboard 2.1.3,cordova-plugin-ionic-webview 1.2.1(和其他6个插件)
系统:
ios部署:2.0.0 NodeJS:v8.12.0(/ usr / local / bin / node) npm:6.4.1 作业系统:macOS Xcode:Xcode 9.4 Build 9F1027a
答案 1 :(得分:0)
在我看来,您的文件传输逻辑未包含在this.platform.ready()
调用中。