Ionic 2:尝试访问文件传输插件,但未安装



我们正在开发一款使用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

有什么帮助吗??

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

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

以下是我所做的:

由于我需要provider中的FileTransfer实例,我创建了一个变量和一个更新程序方法

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

由于我可以访问platform.ready()中的FileTransfer,我在那里实例化了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的提供程序

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

<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

如有任何建议/讨论,我们将不胜感激。

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

删除平台

  1. 离子cordova平台rm android

然后再次添加平台

  1. 离子cordova平台添加android

最新更新