@ -41,7 +41,7 @@ private func requestCameraPermission() {
#### 核心功能:
#### 核心功能:
- **HTML格式显示** : 使用WKWebView加载本地HTML文件
- **HTML格式显示** : 使用WKWebView加载本地HTML文件
- ** 简约风格设计**:现代化的界面设计
- ** 简约风格设计**:现代化的界面布局和样式
- ** 完整内容**:包含所有必要的隐私政策章节
- ** 完整内容**:包含所有必要的隐私政策章节
#### 技术实现:
#### 技术实现:
@ -57,10 +57,11 @@ struct WebView: UIViewRepresentable {
}
}
```
```
#### HTML文件特点:
#### 界面特点:
- ** 渐变头部**:蓝紫色渐变背景的标题区域
- ** 卡片式布局**:清爽的白色容器,圆角设计
- ** 响应式设计**:适配不同屏幕尺寸
- ** 响应式设计**:适配不同屏幕尺寸
- ** 现代化样式**: 使用CSS3和现代设计元素
- ** 现代化样式**: 使用CSS3和现代设计元素
- ** 清晰结构**: 8个主要章节, 内容完整
### 3. 设置界面集成 (`SettingsView.swift`)
### 3. 设置界面集成 (`SettingsView.swift`)
@ -98,42 +99,138 @@ NavigationLink(destination: PrivacyPolicyView().environmentObject(languageManage
}
}
```
```
#### 导航优化:
### 4. 语言本地化系统 (`LanguageManager.swift`)
- ** 移除双重导航栏**: 解决了ContentView和SettingsView都使用NavigationView导致的导航栏重复问题
- ** 直接导航**: 使用NavigationLink替代sheet模态展示, 提供更流畅的导航体验
#### 核心功能:
- ** 简化代码**: 移除了dismiss相关的复杂逻辑
- ** 系统语言跟随**:默认跟随系统语言设置
- ** 智能语言检测**:自动检测系统语言并选择对应支持的语言
### 4. 隐私政策HTML文件 (`privacy_policy.html`)
- ** 手动语言选择**:用户可手动选择特定语言
- ** 语言回退机制**:如果没有对应的语言文件,自动使用英语
#### 设计特点:
- ** 简约风格**:使用渐变头部和现代化的布局
#### 技术实现:
- ** 完整内容**: 包含8个主要章节
```swift
- ** 响应式设计**:适配不同设备屏幕
// 检测系统语言并返回对应的支持语言
- ** 专业外观**:符合现代应用设计标准
private func detectSystemLanguage() -> Language {
let systemLanguage = Locale.current.languageCode ?? "en"
#### 内容结构:
1. 信息收集
// 检查是否是简体中文
2. 信息使用
if systemLanguage.hasPrefix("zh") {
3. 信息共享
return .chinese
4. 数据安全
}
5. 用户权利
6. 儿童隐私
// 检查是否是泰文
7. 政策变更
if systemLanguage == "th" {
8. 联系我们
return .thai
}
## 🌐 本地化支持
// 其他语言默认使用英文
### 支持语言:
return .english
- ** 英文** (en.lproj)
}
- ** 简体中文** (zh-Hans.lproj)
- ** 泰文** (th.lproj)
// 加载保存的语言设置
private func loadLanguage() {
### 新增本地化键:
let hasManualLanguage = UserDefaults.standard.object(forKey: languageKey) != nil
if hasManualLanguage {
// 如果用户手动设置过语言,使用保存的设置
if let savedLanguage = UserDefaults.standard.string(forKey: languageKey),
let language = Language(rawValue: savedLanguage) {
if language == .system {
// 如果保存的是系统语言,检测当前系统语言
let systemLanguage = detectSystemLanguage()
currentLanguage = systemLanguage
} else {
currentLanguage = language
}
}
} else {
// 首次启动,默认使用系统语言
currentLanguage = .system
let systemLanguage = detectSystemLanguage()
// 保存系统语言设置
UserDefaults.standard.set("system", forKey: languageKey)
UserDefaults.standard.set(true, forKey: systemLanguageKey)
// 设置实际语言
switchLanguage(to: .system)
}
}
```
#### 支持的语言选项:
- ** 🌐 跟随系统**:自动跟随系统语言设置
- ** 🇺🇸 English**:英语
- ** 🇨🇳 中文**:简体中文
- ** 🇹🇭 ไทย**:泰文
#### 语言选择界面:
- ** 折叠式选择器**:默认显示当前选中的语言,点击后展开所有选项
- ** 视觉反馈**:选中状态有蓝色背景和勾选图标
- ** 国旗图标**:每个语言选项都有对应的国旗图标
- ** 动画效果**:展开/收起有平滑的动画过渡
- ** 空间优化**:避免语言选项过多时占用过多空间
## 📄 隐私政策内容
### HTML文件结构:
```html
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Privacy Policy - MyQrCode< / title >
< style >
/* 简约风格CSS样式 */
< / style >
< / head >
< body >
< div class = "container" >
< div class = "header" >
< h1 > Privacy Policy< / h1 >
< div class = "last-updated" >
< strong > Last Updated:< / strong > December 28, 2024
< / div >
< / div >
<!-- 8个主要章节 -->
< h2 > 1. Information We Collect< / h2 >
< h2 > 2. How We Use Your Information< / h2 >
< h2 > 3. Information Sharing< / h2 >
< h2 > 4. Data Security< / h2 >
< h2 > 5. Your Rights< / h2 >
< h2 > 6. Children's Privacy< / h2 >
< h2 > 7. Changes to This Policy< / h2 >
< h2 > 8. Contact Us< / h2 >
< / div >
< / body >
< / html >
```
### 隐私政策特点:
- ** 英文版本**:统一使用英文,确保法律效力
- ** 完整内容**:包含所有必要的隐私政策章节
- ** 简约设计**:现代化的界面布局和样式
- ** 响应式布局**:适配不同屏幕尺寸
## 🌍 本地化支持
### 支持的语言:
1. ** 英语 (en)**:默认语言,作为回退语言
2. ** 简体中文 (zh-Hans)**:完整的中文本地化
3. ** 泰文 (th)**:完整的泰文本地化
### 本地化文件:
- `MyQrCode/en.lproj/Localizable.strings` :英文本地化
- `MyQrCode/zh-Hans.lproj/Localizable.strings` :简体中文本地化
- `MyQrCode/th.lproj/Localizable.strings` :泰文本地化
### 新增本地化字符串:
```strings
```strings
"app_permissions" = "App Permissions";
"system_language" = "System"; // 英文
"manage_app_permissions" = "Manage camera and photo library permissions for this app.";
"system_language" = "跟随系统"; // 中文
"privacy_policy" = "Privacy Policy";
"system_language" = "ตามระบบ"; // 泰文
"view_privacy_policy" = "View our privacy policy and data handling practices.";
```
```
## 📱 用户体验
## 📱 用户体验
@ -152,25 +249,31 @@ NavigationLink(destination: PrivacyPolicyView().environmentObject(languageManage
4. 查看简约风格的HTML格式隐私政策
4. 查看简约风格的HTML格式隐私政策
5. 了解应用的数据处理方式
5. 了解应用的数据处理方式
### 语言设置:
1. 用户进入设置界面
2. 在语言设置区域点击当前语言显示
3. 展开语言选项列表
4. 可选择"跟随系统"自动跟随系统语言
5. 或手动选择特定语言(英语、中文、泰文)
6. 选择后自动收起选项列表并立即应用新的语言设置
## 🔧 技术实现细节
## 🔧 技术实现细节
### 权限管理:
### 系统语言检测 :
- 使用`AVFoundation`框架检测相机权限
- 使用`Locale.current.languageCode`获取系统语言代码
- 使用`Photos`框架检测相册权限
- 支持中文前缀检测( zh-Hans, zh-CN等)
- 实时更新权限状态显示
- 支持泰文检测( th)
- 提供权限请求和系统设置跳转功能
- 其他语言默认使用英语
### 隐私政策:
### 语言状态管理:
- 使用`WKWebView`加载本地HTML文件
- 使用UserDefaults保存语言设置
- HTML文件包含完整的隐私政策内容
- 区分手动设置和系统跟随状态
- 响应式设计适配不同屏幕尺寸
- 支持动态语言切换和UI刷新
- 现代化的CSS样式设计
### 导航优化:
### 导航优化:
- 移除SettingsView中的NavigationView包装
- 移除双重NavigationView问题
- 使用NavigationLink替代sheet模态展示
- 使用NavigationLink提供直接导航
- 简化导航逻辑,提供更流畅的用户体验
- 简化子视图的导航标题设置
- 删除功能信息卡片,简化设置界面
## 📝 总结
## 📝 总结
@ -179,14 +282,16 @@ NavigationLink(destination: PrivacyPolicyView().environmentObject(languageManage
1. ** 完整的权限管理界面**,支持实时状态显示和权限操作
1. ** 完整的权限管理界面**,支持实时状态显示和权限操作
2. ** 简约风格的隐私政策界面**, 使用HTML格式提供现代化的英文版隐私政策
2. ** 简约风格的隐私政策界面**, 使用HTML格式提供现代化的英文版隐私政策
3. ** 无缝的设置界面集成**, 使用NavigationLink提供直接的导航体验
3. ** 无缝的设置界面集成**, 使用NavigationLink提供直接的导航体验
4. ** 全面的本地化支持**,支持英文、中文和泰文三种语言
4. ** 智能的语言本地化系统**,支持系统语言跟随和手动语言选择
5. ** 现代化的界面设计**,提供优秀的用户体验
5. ** 全面的本地化支持**,支持英文、中文和泰文三种语言
6. ** 现代化的界面设计**,提供优秀的用户体验
### 主要改进:
### 主要改进:
- ** 隐私政策HTML**:改为简约风格设计,使用渐变头部和现代化的布局
- ** 隐私政策HTML**:改为简约风格设计,使用渐变头部和现代化的布局
- ** 导航方式**: 从sheet模态展示改为NavigationLink直接导航, 提供更流畅的用户体验
- ** 导航方式**: 从sheet模态展示改为NavigationLink直接导航, 提供更流畅的用户体验
- ** 语言系统**:添加系统语言跟随功能,智能检测系统语言并自动选择对应支持的语言
- ** 语言选择器**:改为折叠式设计,默认收起,点击展开,避免占用过多空间
- ** 界面优化**: 移除了不必要的dismiss相关代码, 简化了导航逻辑
- ** 界面优化**: 移除了不必要的dismiss相关代码, 简化了导航逻辑
- ** 导航栏修复**:解决了双重导航栏问题,提供更清晰的导航体验
- ** 用户体验**:解决双重导航栏问题,提供更清晰的导航层次
- ** 功能简化**:删除了功能信息卡片,使设置界面更加简洁
所有功能都已通过编译验证,可以立即投入使用。这些功能将帮助应用更好地管理用户权限,提供透明的隐私政策,并符合现代应用的法律和用户体验要求。
所有功能都已通过编译验证,可以立即投入使用。这些功能将帮助应用更好地管理用户权限,提供透明的隐私政策,智能地适应不同语言环境, 并符合现代应用的法律和用户体验要求。