Files
suixinkan_ios_new/suixinkan/Core/CameraTransfer/CameraTransfer.md
汉秋 5ebcec1cfc 修复边拍边传自动上传范围,并避免上传状态被旧快照回退。
拍后传输下载的历史照片切换模式后不再自动补传;刷新相机文件仅同步本地。重试上传后刷新单张状态,并忽略乱序 pipeline 通知导致的已上传回退。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 14:50:45 +08:00

1.2 KiB
Raw Blame History

CameraTransfer

职责

编排相机照片从下载到上传的通用流程,通过 CameraAssetUploadSink 与业务层解耦。

核心组件

组件 说明
CameraTransferPipeline 监听 onNewAsset、管理任务队列与上传
CameraTransferTask 单条传输任务及状态
CameraAssetUploadSink 上传协议,由业务模块实现

业务流程

  1. 相机服务回调 onNewAsset
  2. Pipeline 下载文件到本地并更新任务状态。
  3. 若照片是在开启自动上传时由 onNewAsset 新发现,加入自动上传资格队列并调用 CameraAssetUploadSink.upload
  4. 上传成功后任务状态变为 uploaded

syncExistingPhotos() 仅同步相机历史照片到本地任务列表,不授予自动上传资格。拍后传输模式下已下载的 downloaded 任务,切换到边拍边传后仍保持待上传,只有业务层显式调用 uploadAssets(withIDs:)retryUpload(...) 时才会上传。

与业务层关系

  • 旅拍相册通过 TravelAlbumMaterialUploader 实现 SinkOSS 上传 + upload-material 登记。
  • Pipeline 不依赖任何 HTTP 或 OSS 具体实现。