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

时间:2018-10-02 13:10:50

标签: ionic-framework ionic3 file-transfer ionic-native

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

我一直很注意您的回答,在此先感谢您的帮助和意见

2 个答案:

答案 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()调用中。

在平台准备就绪之前(因此,在插件准备使用之前)是否有可能被调用?