本页目录

产品文档 / 历史记录与验收范围以文中日期为准

压缩解压缩 iOS App 产品需求文档

文档版本:v1.0
状态:最终产品定义
目标平台:iPhone、iPad
产品形态:本地优先的压缩包创建、解压和文件管理工具

1. 产品定义

产品帮助用户在 iPhone 和 iPad 上可靠地打开、查看、创建、解压和分享压缩文件。产品围绕压缩包任务设计,与 iOS Files、系统分享面板、照片选择器和云端 File Provider 集成。

产品承诺:

  1. 用户从任何 App 收到压缩包后,可以快速查看内容并保存到明确的位置。
  2. 用户可以批量选择文件或文件夹创建压缩包,也可以只解压压缩包内需要的内容。
  3. 文件处理默认在设备本地完成,不上传用户文件,不需要注册账号。
  4. 常见 ZIP、RAR、7z 场景稳定可用,错误提示能够指导用户解决问题。
  5. iPhone 和 iPad 都遵循原生文件管理习惯,支持深色模式、动态字体、VoiceOver、拖拽和键盘操作。

2. 背景与用户问题

Apple Files 已经支持基础 ZIP 创建和解压,但无法覆盖完整的 RAR、7z、加密压缩包和批量处理场景。现有第三方产品虽然格式多,但公开评论中重复出现以下问题:

因此,本产品保持功能边界:只做压缩包和压缩包相关的文件交接,不扩展成文档编辑器、视频转换器、浏览器或云盘客户端。

3. 目标用户与场景

用户 典型需求 成功结果
普通 iPhone 用户 打开邮件或聊天中收到的 ZIP/RAR 找到并使用其中的文件
学生和教师 解压课程资料、电子书、作业素材 批量导出到 Files 或云盘
设计师、开发者、创作者 处理素材包、插件包、项目文件 查看目录、选择性解压、重新打包
摄影和内容用户 批量压缩照片和视频 生成较小的 ZIP 并分享
iPad 办公用户 用键盘、拖拽和分屏处理文件 不离开 iPad 完成归档和交付

核心任务

任务 A:打开并解压收到的压缩包

分享面板 → 选择本 App → 查看目录 → 输入密码(如需要)→ 选择文件 → 选择目标位置 → 解压 → 打开或分享结果。

任务 B:压缩照片或文件夹

文件或照片选择 → 创建压缩包 → 输入名称 → 设置密码(可选)→ 生成 → 保存到 Files 或分享。

任务 C:处理云端压缩包

从 Files 选择云端文件 → 下载并显示进度 → 查看目录 → 选择性解压 → 保存回原 File Provider 或其他位置。

任务 D:处理失败任务

查看失败原因 → 重新输入密码、补齐分卷、释放空间或选择其他目标位置 → 重试,已完成的文件不重复处理。

4. 产品边界

必须包含

明确不包含

5. 功能需求

本表列出的需求全部属于首个正式版本的完整交付范围,不拆分为多个产品阶段。交付要求列统一标记为“本版”,以避免将完整能力误解为后续版本。

5.1 文件导入和来源

ID 需求 说明 交付要求
FR-001 Files 导入 支持 iCloud Drive、On My iPhone、第三方 File Provider 本版
FR-002 分享面板导入 支持邮件、Safari、微信、AirDrop、信息等 App 的“打开方式” 本版
FR-003 照片选择 使用系统照片选择器批量选择照片和视频,不要求完整相册权限 本版
FR-004 拖拽导入 iPad 支持从 Files、邮件和其他 App 拖入文件 本版
FR-005 云端占位文件 需要下载时显示下载进度、网络失败和重试 本版
FR-006 最近文件 展示最近打开或生成的压缩包,记录来源位置和最后操作 本版
FR-007 收藏和标签 用户可收藏常用压缩包或文件夹,标签只保存在本地 本版
FR-008 常用方案 保存可复用的压缩/解压设置,如格式、压缩级别、目标位置和冲突策略;密码默认不保存 本版
FR-009 系统快捷操作 通过 App Intents/Shortcuts 暴露创建 ZIP、打开压缩包和查看任务等核心动作 本版

5.2 格式识别与查看

ID 需求 说明 交付要求
FR-101 内容识别 通过文件头和容器结构识别格式,不只依赖扩展名 本版
FR-102 目录浏览 显示层级、文件名、大小、修改时间、压缩率、加密状态 本版
FR-103 搜索和排序 支持按名称、大小、时间、类型排序和目录内搜索 本版
FR-104 选择性解压 支持选择单个、多个、目录或全部内容 本版
FR-105 预览 图片、PDF、文本、常见音频和视频使用只读预览 本版
FR-106 虚拟化列表 大压缩包目录采用分页或虚拟列表,不一次性加载全部行 本版
FR-107 压缩包信息 显示压缩包大小、展开后估算大小、条目数量、格式和加密方式 本版
FR-108 归档内操作 支持查看条目、复制名称、分享条目;追加、删除、重命名归档内条目 本版

5.3 解压

ID 需求 说明 交付要求
FR-201 格式支持 ZIP、RAR、7z、TAR、GZIP、BZ2、TGZ、ZIPX 等常见格式 本版
FR-202 密码解压 支持传统 ZIP、ZIP AES;RAR 和 7z 密码读取以底层库实际能力为准,错误密码可重试或给出不支持提示 本版
FR-203 多卷解压 识别 ZIP .z01/.zip、ZIP .zip.001 以及常见 RAR 分卷文件并要求选择完整卷组;缺失时提示缺少文件 本版
FR-204 目标选择 默认提供“原文件所在位置”,也可选择 App、本机、iCloud 和其他 Provider 本版
FR-205 重名策略 替换、保留两份、跳过、逐个询问;记住本次任务选择 本版
FR-206 保留目录 默认保留压缩包内相对目录结构,用户可选择扁平化输出 本版
FR-207 进度控制 显示已处理数量、总数、字节数、速度、剩余时间;支持暂停和取消 本版
FR-208 部分成功 个别条目失败时保留成功结果,展示失败清单和重试入口 本版
FR-209 完成动作 解压完成后支持打开目标文件夹、预览、分享或继续处理 本版
FR-210 解压校验 完成后校验文件大小和校验和;损坏时标记为失败 本版

5.4 创建压缩包

ID 需求 说明 交付要求
FR-301 多选创建 多个文件、多个文件夹和照片/视频一次创建压缩包 本版
FR-302 ZIP 创建 创建标准 ZIP,兼容 Windows、macOS、Linux 和常见移动端工具 本版
FR-303 密码和 AES 支持无密码、密码 ZIP、AES-256 ZIP;密码不进入日志 本版
FR-304 名称和位置 自定义压缩包名称,选择保存位置 本版
FR-305 压缩级别 提供“平衡”和“更小体积”两个易懂选项;默认平衡 本版
FR-306 文件结构预览 生成前展示选中文件、预计大小和目录结构 本版
FR-307 生成进度 显示进度、速度、剩余时间、暂停、取消和错误 本版
FR-308 7z 创建 创建普通 7z;密码保护创建暂不纳入,使用 ZIP AES 满足加密创建需求 本版
FR-309 分卷压缩 按用户设置的分卷大小创建 ZIP 切片分卷,并一次性分享卷组 本版

5.5 文件管理

ID 需求 说明 交付要求
FR-401 文件夹 创建、重命名、移动、复制、删除文件夹 本版
FR-402 文件操作 重命名、移动、复制、删除、分享和保存到其他 App 本版
FR-403 冲突处理 文件操作和解压统一使用冲突处理组件 本版
FR-404 回收站 删除进入可恢复回收站,支持恢复和清空;清空前二次确认 本版
FR-405 位置说明 明确显示文件位于本机、iCloud 或其他 Provider 本版
FR-406 文件排序 按名称、大小、类型、修改时间排序,支持列表和紧凑网格 本版

5.6 任务中心

ID 需求 说明 交付要求
FR-501 任务队列 多个压缩和解压任务排队执行,默认限制并发数 本版
FR-502 任务详情 显示来源、目标、格式、进度、速度和剩余时间 本版
FR-503 暂停恢复 对可恢复任务保存检查点,恢复后不重复已完成内容 本版
FR-504 取消清理 取消后清理临时文件,不删除源文件和已完成输出 本版
FR-505 通知 任务完成、失败或需要密码时使用本地通知;可在设置关闭 本版
FR-506 历史记录 保留最近任务结果,支持删除历史,不保存文件内容 本版

5.7 隐私和设置

ID 需求 说明 交付要求
FR-601 本地优先 核心压缩、解压、预览不依赖服务器 本版
FR-602 无账号 基本功能无需注册和登录 本版
FR-603 无广告 不显示广告,不使用广告 SDK 本版
FR-604 应用锁 支持 Face ID、Touch ID 或设备密码保护 App 本版
FR-605 密码保存 用户明确开启后才保存密码,使用 Keychain 本版
FR-606 权限说明 在需要照片或通知权限前解释用途,拒绝后仍可完成 Files 任务 本版
FR-607 数据清除 提供清除最近记录、临时文件、已保存密码和回收站的入口 本版

6. 关键业务规则

  1. 永远保留源压缩包,解压和重打包不会覆盖源文件。
  2. 默认保留压缩包内目录结构,不默认把大量文件铺平到一个目录。
  3. 对不安全路径进行规范化,拒绝写入目标目录以外的位置。
  4. 解压前检查可用空间,至少预留预计输出大小加安全余量。
  5. 单个文件失败不影响其他安全文件,但必须在结果页显示失败原因。
  6. 密码错误不把密码写入日志、崩溃报告、通知或分析事件。
  7. 云端文件未下载完成时不能开始解压;网络断开提供重试。
  8. 用户取消任务后,已生成的完整文件可以保留,未完成临时文件必须清理。
  9. 归档内同名文件按目录路径区分;输出时才执行冲突策略。
  10. 压缩包扩展名与内容不一致时,以内容识别结果为准,并向用户说明。
  11. ZipHarbor 创建的 ZIP 分卷使用 name.zip.001, name.zip.002 序列化切片;此方案保证本 App 可识别和组卷,但第三方工具兼容性需以用户所用工具为准。

7. 非功能需求

性能

稳定性

可访问性和国际化

8. 验收指标

  1. 新用户无需教程,在 60 秒内完成“打开 ZIP 并保存一个文件”。
  2. 90% 的测试用户能在首次操作中找到输出文件。
  3. 90% 的测试用户能完成“选择多张照片并生成 ZIP”。
  4. 任务失败时,用户能从错误页判断下一步动作。
  5. 测试数据中不发生 Zip Slip、越权写入或源文件覆盖。
  6. 崩溃率低于 0.5%,任务级失败率持续监测并按格式分类。
  7. 不采集文件名、路径、密码、文件内容或完整云盘结构。

9. 关键验收场景

场景 验收结果
从分享面板打开加密 ZIP 直接进入归档详情;输入错误密码时保留当前上下文并允许重试;正确后能选择条目和目标位置
只解压指定文件 只生成选中的条目;默认保留其相对目录;成功和失败条目分别列出
解压到云端文件夹 先等待 File Provider 准备好源文件;输出期间显示同步/保存状态;失败时可重试
遇到同名文件 默认不覆盖;用户可应用一次策略到本次任务全部冲突
压缩大量照片 只请求用户选中的照片;处理时 UI 可操作;取消后清理未完成临时文件
文件名包含 Unicode 或路径穿越内容 正常显示 Unicode 名称;危险路径不写出目标目录并明确报告
磁盘不足或文件损坏 不破坏源文件;显示可理解原因、受影响条目和可执行的下一步
App 在任务中被系统挂起 保存可用检查点;返回 App 后恢复或明确提示重试,不静默丢失任务
重复进行相同压缩任务 用户可从常用方案选择上次设置;密码不会因复用方案自动填充

10. 产品体验指标

11. 研究依据