离子应用的构建问题

时间:2018-08-01 12:24:32

标签: ionic-framework ionic3 filechooser filepicker

我正在使用Android的FileChooser离子插件和IOS的FilePicker插件。如果我使用相同的代码来构建android和IOS应用,则会出现FilePicker插件无法添加到Android的错误。 当前要在不同平台上构建应用程序,我将为iOS构建和android构建维护两个不同的分支。

我只想在一个分支上维护我的代码。我该怎么办?

无效的解决方案:

  1. 搜索了可在iOS和Android上运行但无法使用的插件
  2. 搜索是否可以在config.xml的平台下添加插件
  3. 我发现没有办法检测平台并相应地添加插件

1 个答案:

答案 0 :(得分:1)

您可以添加特定于平台的检查并相应地使用插件。

  import { Platform } from 'ionic-angular';
  import { FileChooser } from '@ionic-native/file-chooser';
  import { FilePath } from '@ionic-native/file-path';
  import { IOSFilePicker } from '@ionic-native/file-picker';

  constructor(
    private fileChooser: FileChooser,
    private filePicker: IOSFilePicker,
    private filePath: FilePath,
    private platform: Platform) {
  }

  chooseFile() {
    if (this.platform.is('ios')) {
      this.pickFileFromIOSDevice();
    }
    else if (this.platform.is('android')) {
      this.pickFileFromAndroidDevice();
    }
  }

  pickFileFromIOSDevice() {
    this.filePicker.pickFile()
      .then(
        uri => {
          this.fileName = uri.substring(uri.lastIndexOf("/") + 1);
        }
      )
      .catch(error => {
        this.showError(error);
      });
  }

  pickFileFromAndroidDevice() {
    this.fileChooser.open()
      .then(
        uri => {
          this.filePath.resolveNativePath(uri)
            .then(file => {
              this.fileName = file.substring(file.lastIndexOf("/") + 1);
            })
            .catch(err => console.log(err));
        }
      )
      .catch(error => {
        this.showError(error);
      });
  }