我们正在开发使用本机文件传输插件的应用程序。但是由于一个奇怪的问题,我们无法创建iOS的“测试飞行/发布版本”。

问题:
即使成功安装了“文件传输”插件,我们在使用以下命令运行应用程序时也会看到以下错误

ionic cordova run ios -lc

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


当我们点击一​​个调用fileTransfer.download(..)方法的按钮时,该应用将暂停执行而不会引发任何错误。

我在以下位置创建了带有日志和代码的详细帖子:

https://github.com/ionic-team/ionic-native/issues/2110

有帮助吗??

最佳答案

经过彻底的头脑风暴,我找到了答案-

我的问题是可以从platform ready函数内部访问FileTransfer对象,但不能在provider内部访问-在iOS上也是如此[Android版本运行正常]

这是我所做的:

因为我需要FileTransfer中的provider实例-我创建了一个变量-和一个updater方法-

private fileTransfer: any;

public setFileTransferRef( param ){
   this.fileTransfer = param;
}


当我可以访问FileTransfer内部的platform.ready()时,就在此实例化了FileTransferObject并按如下所示更新了provider-

initializeApp() {
    this.platform.ready().then(() => {
        console.log('fileTransfer: ');
        console.log(JSON.stringify(this.fileTransfer));
        //
        let fileTransfer: FileTransferObject = this.fileTransfer.create();
        //
        this.mediaIOSProv.setFileTransferRef(fileTransfer);
        .....
        ....



其中mediaIOSProv是负责下载zip的提供程序。


我还把cordova.js包含在build/vendor.js之后的index.html中-(我遇到过一些帖子,开发人员报告说这样做解决了他们丢失的插件问题)-尽管没有这样的官方文档。

<body>

  <!-- Ionic's root component and where the app will load -->
  <ion-app></ion-app>

  <!-- The polyfills js is generated during the build process -->
  <script src="build/polyfills.js"></script>

  <!-- The vendor js is generated during the build process
       It contains all of the dependencies in node_modules -->
  <script src="build/vendor.js"></script>

  <!-- cordova.js required for cordova apps -->
  <script src="cordova.js"></script>

  <!-- The main bundle js is generated during the build process -->
  <script src="build/main.js"></script>

</body>



  由于该应用成功在iOS上运行-我不敢更改
  cordova.js的位置


我想的是-

1:最好创建一个Provider来存储准备在平台中实例化的每个本机插件的引用-并在需要时使用引用

2:可能缺少某些有关Ionic-Native Wrapper的信息,尤其是有关iOS的信息

任何建议/讨论将不胜感激。

关于ios - Ionic 2:尝试访问FileTransfer插件,但未安装,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47240921/

10-10 17:22