2017-11-11 92 views
0

我们正在开发使用Native File Transfer插件的应用程序。但由于一个奇怪的问题,我们无法为iOS创建测试飞行/发布版本。Ionic 2:尝试访问FileTransfer插件,但未安装

问题: 即使我们看到下面的错误,而与

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

任何帮助?

回答

2

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

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

这里是我做过什么:

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

private fileTransfer: any; 

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

正如我可以访问FileTransferplatform.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提供负责下载邮编。

我也放在与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:可能会丢失一些信息,尤其是关于iOS的,关于Ionic-Native Wrapper

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