Частота передачи файлов в IOS IONIC 3

Я прокомментировал, что разрабатываю приложение на IONIC 3 и работаю с собственной библиотекой передачи файлов.

В тот момент, когда вы хотите загрузить файл в IOS, он не выполняет его, и не то, что когда он установлен или отлажен в Android.

Согласно документации ionic я реализую его правильно, и я не понимаю, почему или что отсутствует, чтобы IOS могла выполнить transfer.download, которая является инструкцией, которая не выполняется.

и в консоли появляется следующая ошибка:

console.warn: 'Native: tried accessing the FileTransfer plugin but it's not installed.

Ниже я оставляю свой код:

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.info("LLEGA ACA");
          this.alerta("Se ha descargado el archivo de manera satisfactoria.");
          console.info("LLEGA ACA 2");
          this.loading.dismissAll();
          console.info("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();
    });
  }
}

Я внимательно отношусь к вашим ответам и заранее благодарю вас за вашу помощь и мнения

Вы проводите тесты Android и iOS на разных машинах? Если да, кажется, вам нужно запустить npm install на машине iOS?

BRass 02.10.2018 15:50

Прежде всего, спасибо за ответ. отвечая на ваш вопрос, да, я действительно использую Android и IOS на разных компьютерах. Что касается установки npm, я уже сделал это, так как я скачал исходники с нуля из репозитория, доступного компанией на github. Фактически, если бы у меня не был установлен плагин npm, он потребовал бы меня, когда я хотел бы собрать или запустить ios, что не так.

Cristian Saavedra 02.10.2018 17:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
392
2

Ответы 2

Я забыл указать следующую информацию о моем ionic:

Ионный:

ionic (Ionic CLI): 4.1.2 (/ usr / local / lib / node_modules / ionic) Ионный каркас: ионно-угловой 3.9.2 @ ionic / app-scripts: 3.1.10

Кордова:

Кордова (Cordova CLI): 8.1.1 ([email protected]) Платформы Кордовы: 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 Версия сборки 9F1027a

нет необходимости публиковать его как ответ, вы можете отредактировать исходный вопрос

George 02.10.2018 21:40

Мне кажется, что ваша логика передачи файлов не заключена в вызов this.platform.ready(). Может быть, бывают случаи, когда это вызывается до готовности платформы (и, следовательно, до того, как плагин будет готов к использованию)?

Другие вопросы по теме