首页 文章

(IOS)Cordova Camera Plugin参考已删除的图像

提问于
浏览
2

我正在构建一个cordova应用程序(主要用于IOS和Android),用户可以在其中拍摄图像,重新拍摄(等)并在本地保存 .

我目前正在努力使用cordova cameraPlugin . 所以,这里是对问题的简短描述 .

当用户拍摄图像时,它会在本地保存在apps temp文件夹中,用户可以在UIWebView中查看 . 重新拍摄时,图像将从临时文件夹中删除,不再可用(在RAM和本地FS中) . 只要用户没有重新拍摄图像2次或更多次,它就可以工作,如果他不是最后一个图像,则第一个图像将在WebView中被引用/呈现 . 重新打开应用程序后,图像将正确显示 .

一个例子:

  • 用户拍摄第一张图像 . ==> cdv_photo_001.png

  • 第二个 . ==> cdv_photo_002.png,第一个将被删除(似乎工作正常)

  • 第三个 . ==> cdv_photo_001.png,第二张图片将被删除 .

第三个图像看起来与 deleted 第一个图像相同 . 第三个之后的每个图像都会发生这种情况 . It works fine after restarting the app

我已经尝试禁用App-Cache,在更新图像之前删除应用缓存,刷新页面并在线查找答案 .

打开相机UI时出现错误,但我找不到解决方案 .

快照未渲染的视图会导致空快照 . 确保在屏幕更新后快照或快照之前至少渲染了一次视图 .

相机代码调用:

function getPhoto() {
    navigator.camera.getPicture(getPhotoOnSuccess, getPhotoOnFail, {
        quality: 25,
        destinationType: Camera.DestinationType.FILE_URL,
        correctOrientation: true,
        encodingType: Camera.EncodingType.PNG
    });
}

在getPhotoOnSuccess中,我基本上将图像路径保存到数据库并使用jQuery将其附加到视图中 .

以及删除图像的代码:(旁注我是Objective C的新手)

- (void) deleteImageByPath:(NSString *)imagePath withSelector:(SEL)selector{
    NSError *error = nil;
    NSFileManager *mgr = [NSFileManager defaultManager];
    NSString *tempFolder = NSTemporaryDirectory();

    if([mgr removeItemAtPath: imagePath error:&error] == NO) {
        NSLog(@"File deleted");
    }

    //The files can be edited as well, so there can be two files in different directories
    if(error != nil){    
        NSString *imgEl = tempFolder;
        imgEl = [imgEl stringByAppendingPathComponent:imagePath.lastPathComponent];
        if(![mgr removeItemAtPath:imgEl error:&error]){
            NSLog(@"Old element couln't be deleted.");
        }
    }

    [self performSelector:selector withObject:error];
}

删除后该文件不再在目录中,所以我猜它有效 . 一个重要的细节可能是,我编写了自己的IOS cordova插件,因为cordova提供的文件系统访问方法很糟糕 .

就是这样了 . 具体问题是:为什么以及如何发生这种情况并且有机会改变这种行为吗?如果是,我该怎么办?

顺便说一下,我使用的是cordova 3.1.0,构建目标是IOS 7 .

提前致谢 .

1 回答

  • 0

    好的伙计们,我终于明白了 .

    整个问题与我的代码或任何cordova代码无关 . 那么为什么会这样呢? ==>我并不确切地知道,因为看起来很多人都会发现这个错误或者你可能称之为的错误 .

    他们都像我一样试图删除或停用缓存,他们的一些问题非常接近我自己,但大多数问题都没有,所以我花了一段时间才发现解决方案 .

    我读了this thread并试图在图像路径上添加一个时间戳,然后就可以了!我的结论是,UIWebView和缓存管理可能存在问题 .
    或者它可能证明是一般的WebView问题,我将能够在几天内检查Adroid设备 .

相关问题