为什么`mediaCapture.captureImage()`会崩溃我的`ionic`应用程序?

时间:2017-10-31 21:41:21

标签: ios angular cordova ionic-framework

我正在ionic中构建一个IOS应用程序来捕获媒体(照片,视频,音频)并在今天遇到一个相当混乱的问题。我使用以下3种方法(在MediaCapture上):

  • captureImage()
  • captureVideo()
  • captureAudio()

唯一不起作用的是captureImage()而我无法为我的生活找出原因。 旁注:我 能够使用camera.getPicture(),但我想对所有3种媒体类型使用MediaCapture(并且它不会#39;理解为什么我能做到。

以下是一些细节:

环境

  • 操作系统:Mac OS 10.12.6
  • 节点:9.0.0
  • ionic :3.15.2
  • Cordova :7.1.0
  • iOS :11.1

我使用ionic cordova run ios -l -c -s在我的设备上运行该应用。

示例代码

示例代码(提取的Typescript)
private media: object = {
  'image': 'captureImage',
  'video': 'captureVideo',
  'audio': 'captureAudio'
};

function captureMedia(media) {
  console.log('capturing');
  const options: CaptureImageOptions = {
    limit: 1
  };
  this.mediaCapture[this.media[media]](options)
    .then(
      (data: MediaFile[]) => console.log(JSON.stringify(data)),
      (err: CaptureError) => console.error(JSON.stringify(err))
    );
}

captureMedia('image'); // CRASHES!!
captureMedia('audio'); // WORKS!
captureMedia('video'); // WORKS!

没有输出。没有警告。无控制台输出。只是 kaput

我觉得我在这里遗漏了一些东西,但我无法看到它是什么。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

所以,我最终试图在我的设备上从Xcode运行它,最后得到一个有用的错误消息!事实证明,我的config.xml缺少一个用于隐私权限的属性。

这是一个失踪的人:

<edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryAddUsageDescription">
    <string>Allow photo library access.</string>
</edit-config>

请记住,您还需要以下(我有)的描述:

  • NSCameraUsageDescription
  • NSMicrophoneUsageDescription
  • NSPhotoLibraryUsageDescription

干杯!