经过彻底的头脑风暴,我找到了答案——
我的问题是可以从 platform ready 函数内部访问 FileTransfer 对象,但不能在 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 的 Provider。
我还在build/vendor.js 之后将cordova.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 Plugin 的引用 - 并在需要时使用引用
2:可能缺少一些关于Ionic-Native Wrapper的信息,特别是关于iOS的信息
任何建议/讨论都将受到高度赞赏。