Ionic 2:尝试访问FileTransfer插件但未安装

时间:2017-11-11 17:40:41

标签: ios ionic2 cordova-plugins ionic-native

我们正在开发一个使用Native File Transfer插件的应用程序。但由于一个奇怪的问题,我们无法为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

任何帮助??

3 个答案:

答案 0 :(得分:2)

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

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

这是我做的:

因为我需要FileTransferprovider的实例 - 我创建了一个变量 - 和一个更新程序方法 -

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来存储在平台准备好的实例化的每个Native插件的引用 - 并在需要时使用引用

2:关于Ionic-Native Wrapper

,可能会遗漏一些特别是关于iOS的信息

任何建议/讨论都将受到高度赞赏。

答案 1 :(得分:0)

使用此: 先运行ionic cordova platform add [platform],然后运行ionic cordova build [platform],然后在设备中运行。 它对我有用!

答案 2 :(得分:0)

移除平台

  1. 离子科尔多瓦平台rm android

然后再次添加平台

  1. 离子cordova平台添加android