Cordova摄像头iOS问题:未找到错误

Cordova摄像头iOS问题:未找到错误,ios,cordova,ionic-framework,ionic3,cordova-plugins,Ios,Cordova,Ionic Framework,Ionic3,Cordova Plugins,我使用的是cordova插件相机cordova插件(版本4.0.3),由Ionic 4@Ionic Native的Ionic Native包装包装/camera@4。我用它来捕获一张照片(普通照片或图书馆照片),并将其移动到我的应用程序存储区进行保存/发送。Android上的工作非常好。在iOS上,当我试图获取从捕获中返回的文件URI时,我会继续得到一个NOT\u FOUND\u ERR 下面是我如何拍摄的图像,效果很好。相机启动,我抓拍(或选择)一张照片,然后我得到一个文件URI(file:/

我使用的是
cordova插件相机
cordova插件(版本4.0.3),由Ionic 4
@Ionic Native的Ionic Native包装包装/camera@4
。我用它来捕获一张照片(普通照片或图书馆照片),并将其移动到我的应用程序存储区进行保存/发送。Android上的工作非常好。在iOS上,当我试图获取从捕获中返回的文件URI时,我会继续得到一个
NOT\u FOUND\u ERR

下面是我如何拍摄的图像,效果很好。相机启动,我抓拍(或选择)一张照片,然后我得到一个文件URI(file:///var/mobile/Containers/Data/Application/{guid}/tmp/XYZ.jpg)。然后,像对这个结果文件URI执行
resolveLocalFilesystemUrl
这样简单的操作将导致
NOT\u FOUND\u ERR
爆炸。有什么建议吗

const options: CameraOptions = {
  quality: 100,
  destinationType: this.camera.DestinationType.FILE_URI,
  encodingType: this.camera.EncodingType.JPEG,
  mediaType: this.camera.MediaType.PICTURE,
  sourceType: (isFromLibrary) ? this.camera.PictureSourceType.PHOTOLIBRARY : this.camera.PictureSourceType.CAMERA, 
  saveToPhotoAlbum: false,
  targetWidth: (isForDocScan) ? desiredWidth + 500 : desiredWidth,
  targetHeight: (isForDocScan) ? desiredHeight + 500 : desiredHeight
}

let result = null;
try {
  result = await this.camera.getPicture(options);
}
catch (err) {
  this.loggingService.error('Error getting photo', err);
}

使用
Camera.DestinationType
configs时,您似乎遇到了一些问题。以下是使用
FILE\u URI
NATIVE\u URI

Camera.DestinationType.FILE\u URI

'file://' ios
'content://' android
'assets-library://' ios
'content://' android
摄像机.DestinationType.NATIVE\u URI

'file://' ios
'content://' android
'assets-library://' ios
'content://' android

虽然这是输出,但它与
源类型
内部相关。这意味着,如果您的
sourceType
是相机,您应该使用
FILE\u URI
,因为输出是从临时存储中获取的,而如果您使用的是photogallery,则需要从库中获取输出,这就是为什么建议您使用
NATIVE\u URI

相机会抛出错误还是
resolveLocalFilesystemUrl
?resolveLocalFilesystemUrl会抛出错误。相机拍摄似乎正常,并返回拍摄照片的文件路径。我没有访问提供的文件的权限,或者该文件无效?您是否可以包括摄像头的uri以及如何调用
resolveLocalFilesystemUrl
?是的
let originalFile=wait this.file.resolveLocalFilesystemUrl(imagePath)和URI的形式为
file:///var/mobile/Containers/Data/Application/{guid}/tmp/XYZ.jpg
您可以尝试使用
destinationType:this.camera.destinationType.NATIVE_URI
?谢谢。我可以确认,如果我在iOS上使用
DestinationType.NATIVE\u URI
,它确实可以工作。这似乎是
PHOTOLIBRARY
CAMERA
源都需要的。我发誓这曾经在iOS上的某个点上与
文件URI
一起工作。也许我在没有意识到的情况下做了一些插件/软件包的更改。我发现调用
camera.cleanup()
对这一点影响很大。实际上,只要将调用移动到
camera.cleanup()
,我就可以重新使用
DestinationType.FILE\u URI
。因此,这种清理似乎在Android/iOS上的行为有所不同,它确实影响了PHOTOLIBRARY的使用,这与文档中的说法不符。但是,我认为清理的行为是正确的,因为它意味着内存管理。使用camera会创建临时文件,而使用base64则容易出现内存泄漏,这需要通过清理方法来解决。但是,使用照片库不会造成任何内存问题。文档状态仅在Camera.sourceType的值等于Camera.PictureSourceType.Camera且Camera.destinationType等于Camera.destinationType.FILE_URI时适用。。在iOS上,我注意到当源和目标类型不同时,清理会影响功能。所以我只是说这些文档似乎与我在iOS上看到的不匹配。