Ionic 2相机选择iOS上的视频无法正常工作

时间:2017-09-27 13:47:40

标签: ios ionic2

我正在开发一款带有Ionic 2的应用程序,我遇到了@ionic-native/Camera的问题。我在Upload.ts

上有这段代码
let loader = this.loading.create({
  content: 'Carregando video....'
});
loader.present().then(() => {
  const options: CameraOptions = {
    quality: 100,
    destinationType: this.camera.DestinationType.FILE_URI,
    sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
    mediaType: this.camera.MediaType.VIDEO,
  }
  this.camera.getPicture(options).then((videoData) => {
      this.uploadForm.controls['file'].setValue(videoData)
      loader.dismiss();
    }, (err) => {
      console.log(err);
  });
});

此代码在Android中运行良好,但是当我运行ionic cordova run ios -lc时,承诺this.camera.getPicture(options)永远不会被解析,因此加载器会一直运行。

提前致谢!

1 个答案:

答案 0 :(得分:1)

所以,我发现了问题。第一件事是本机组件错误-l (--livereload)。我不知道如何解释原因,但我从Ionic Worldwide获得了这些信息。 Ionic Team的一名成员说:

"live-reload on a device can cause issues with plugins and file system".

所以我用这个视频来了解如何使用iOS模拟器和Safari对APP进行debbug。

https://www.youtube.com/watch?v=Aob749bkoLY

视频的简短说明:使用iOS模拟器时,您可以访问菜单Developer > Emulator > <App Name>。将打开一个包含检查器工具的新窗口,并且此窗口中将显示来自模拟器的日志。

我发现视频网址不正确。之前,要与Android兼容,我这个代码负责在系统中找到视频指针并发送到服务器:

filePath = 'file:///' + this.uploadForm.controls['file'].value;

但是,iOS文件选择器已经有一个“file:///”前缀。因此,为它添加前缀使它错了。所以我将代码更新为:

  if (this.platform.is('android')) {
    filePath = 'file:///' + this.uploadForm.controls['file'].value;
  } else {
    filePath = this.uploadForm.controls['file'].value;
  }

这解决了这个问题。