【问题标题】:Ionic 2: tried accessing the FileTransfer plugin but it's not installedIonic 2:尝试访问 FileTransfer 插件,但未安装
【发布时间】:2018-04-24 18:05:05
【问题描述】:

我们正在开发一个使用本机文件传输插件的应用程序。但由于一个奇怪的问题,我们无法为 iOS 创建 Test Flight / Release Build。

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

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

有什么帮助吗??

【问题讨论】:

    标签: ios ionic2 cordova-plugins ionic-native


    【解决方案1】:

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

    我的问题是可以从 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的信息

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

    【讨论】:

      【解决方案2】:

      使用这个: 运行ionic cordova platform add [platform] 然后ionic cordova build [platform] 并在您的设备中运行。 它对我有用!

      【讨论】:

        【解决方案3】:

        移除平台

        1. ionic cordova 平台 rm android

        然后再次添加平台

        1. ionic cordova 平台添加 android

        【讨论】:

          猜你喜欢
          • 2017-10-28
          • 1970-01-01
          • 1970-01-01
          • 2020-10-16
          • 2021-11-10
          • 1970-01-01
          • 2019-03-23
          • 2018-06-03
          • 1970-01-01
          相关资源
          最近更新 更多