IOS IONIC 3 中的文件传输发生率



我评论说我正在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();
});
}
}

我仍然关注您的回答,并提前感谢您的帮助和意见

我忘了输入我的离子信息,如下所示:

离子的:

ionic (Ionic CLI( : 4.1.2 (/usr/local/lib/node_modules/ionic( 离子骨架:离子角 3.9.2 @ionic/应用程序脚本:3.1.10

科尔多瓦:

科尔多瓦(科尔多瓦 CLI( : 8.1.1 (科尔多瓦-lib@8.1.0( 科尔多瓦平台 : ios 4.5.4 科尔多瓦插件:科尔多瓦插件离子键盘 2.1.3、科尔多瓦插件 ionic-webview 1.2.1(和其他 6 个插件(

系统:

iOS部署:2.0.0 NodeJS : v8.12.0 (/usr/local/bin/node( npm : 6.4.1 操作系统 : 苹果操作系统 Xcode : Xcode 9.4 Build 版本 9F1027a

在我看来,您的文件传输逻辑没有包含在this.platform.ready()调用中。 是否有可能在平台准备就绪之前(因此,在插件准备好使用之前(调用它?

最新更新