You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让VNDocumentCameraViewController清除历史扫描记录?

解决VNDocumentCameraViewController自动存储历史扫描记录的问题

VisionKit 并没有提供公开 API 直接禁用 VNDocumentCameraViewController 的历史扫描记录功能,但可以通过以下两种方式规避这个问题:

  • 方案一:自行处理扫描结果,跳过系统默认保存逻辑
    实现 VNDocumentCameraViewControllerDelegate 的 documentCameraViewController(_:didFinishWith:) 方法,在回调中获取扫描得到的 VNDocumentCameraScan 对象,自行提取图片或PDF数据完成后续业务处理(比如本地展示、服务器上传等),之后直接关闭扫描控制器,不触发系统默认的保存流程。这样本次扫描的内容就不会被添加到系统历史记录中。

    示例代码:

    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
        // 遍历扫描页面,提取图片数据
        for pageIndex in 0..<scan.pageCount {
            let scannedImage = scan.imageOfPage(at: pageIndex)
            // 这里添加你的图片处理逻辑
        }
        // 直接关闭扫描控制器,不执行系统保存操作
        controller.dismiss(animated: true)
    }
    
  • 方案二:自定义扫描界面替代系统控制器
    如果需要完全掌控扫描流程,可以基于AVFoundation框架搭建自定义的文档扫描界面,自己实现边缘检测、图像校正等核心功能,扫描数据的存储逻辑完全由你控制,从根源上避免系统生成历史扫描记录。这种方式灵活性更高,但需要额外开发扫描相关的核心功能。

注意:如果用户在系统扫描界面手动点击「保存」按钮,扫描内容仍会存入系统的「扫描文稿」文件夹,这种情况无法通过API阻止,只能通过界面提示引导用户,或者采用方案二完全自定义扫描流程。

内容的提问来源于stack exchange,提问作者svprdga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:52:21