首页 > 解决方案 > IOS 的 Cordova Media Capture captureImage 崩溃

问题描述

这个应用程序运行良好,大约 3 周前在应用程序商店发布。但是,现在当我使用 Cordova 媒体captureImage功能时,它最终会黑屏并强制退出。

我实际上可以拍照,只有当我单击“使用照片”时它才会崩溃。

我可以很好地录制和使用视频,这也让我感到困惑。

我很困惑为什么它突然停止工作?同样的代码也用于android,它工作正常。

我必须通过上传到测试飞行进行测试,所以我没有选择 USB 调试。

Cordova 版本:8.1.2 (cordova-lib@8.1.1)

XCode:版本 10.1 (10B61)

有人对我如何解决此问题有任何建议吗?

我已经为权限添加了适当的配置更改。

<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
  <string>My Reason..</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSMicrophoneUsageDescription">
  <string>My Reason..</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
  <string>My reason ..</string>
</edit-config>

这是我的 JavaScript:

function takePicture(filePreview, multiUpload) {
  var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
      path = mediaFiles[i].fullPath;
      if (filePreview !== null) {
        var image = document.getElementById(filePreview);
        image.src = path;
      }
    }
  };

  // capture error callback
  var captureError = function(error) {
    //alert("oops");
  };

  // start image capture
  if (multiUpload) {
    navigator.device.capture.captureImage(captureSuccess, captureError, {
      limit: 5
    });
  } else {
    navigator.device.capture.captureImage(captureSuccess, captureError, {
      limit: 1
    });
    return;
  }
}

标签: javascriptcordova

解决方案


它可能已在您的权限中删除它,但请检查以确保您的 info.plist 文件中仍有 NSCameraUsageDescription、NSMicrophoneUsageDescription 和 NSPhotoLibraryUsageDescriptionentry。当我出于某种原因更新我的项目时,它之前已经为我删除了它。


推荐阅读