# 网络权限检查功能实现说明

## 功能概述

在 LaunchScreenView 中实现了网络权限检查功能，如果用户没有授权网络权限，应用会停留在启动界面并提示用户授权。

## 实现的功能

### 1. 网络权限管理器 (NetworkPermissionManager)

**文件位置**: `MyQrCode/Utils/NetworkPermissionManager.swift`

**主要功能**:
- 使用 `NWPathMonitor` 实时监控网络状态
- 提供网络权限检查方法
- 支持打开系统设置页面
- 发布网络状态变化通知

**核心属性**:
```swift
@Published var isNetworkAvailable = false      // 网络是否可用
@Published var isCheckingNetwork = true        // 是否正在检查网络
@Published var showNetworkPermissionAlert = false  // 是否显示权限提示
```

### 2. 网络权限请求界面 (NetworkPermissionView)

**主要组件**:
- 网络图标 (wifi.slash)
- 权限说明文本
- 重新检查按钮
- 打开设置按钮

**交互功能**:
- 点击"重新检查"按钮重新检测网络状态
- 点击"打开设置"按钮跳转到系统设置
- 网络恢复后自动继续启动流程

### 3. 启动界面集成 (LaunchScreenView)

**修改内容**:
- 添加网络权限检查逻辑
- 集成 NetworkPermissionView
- 支持网络权限获取后的回调

**启动流程**:
1. 显示正常的启动动画 (2秒)
2. 检查网络权限状态
3. 如果网络不可用，显示权限请求界面
4. 如果网络可用，继续启动流程

## 本地化支持

### 中文 (zh-Hans.lproj/Localizable.strings)
```strings
"network_permission_required" = "网络权限需要";
"network_permission_description" = "应用需要网络权限来提供完整的服务功能";
"check_network" = "重新检查";
"checking_network" = "检查中...";
"open_settings" = "打开设置";
"initializing" = "正在初始化...";
```

### 英文 (en.lproj/Localizable.strings)
```strings
"network_permission_required" = "Network Permission Required";
"network_permission_description" = "The app needs network permission to provide complete service functionality";
"check_network" = "Check Again";
"checking_network" = "Checking...";
"open_settings" = "Open Settings";
"initializing" = "Initializing...";
```

## 使用方式

### 在 MyQrCodeApp.swift 中的集成
```swift
LaunchScreenView {
    hideLaunchScreen()
}
```

### 网络权限检查流程
1. 应用启动时显示启动界面
2. 2秒后开始检查网络权限
3. 如果网络不可用，显示权限请求界面
4. 用户可以通过以下方式解决：
   - 点击"重新检查"按钮
   - 点击"打开设置"按钮跳转到系统设置
   - 手动开启网络连接
5. 网络恢复后自动继续启动流程

## 技术特点

### 1. 实时网络监控
- 使用 `NWPathMonitor` 进行实时网络状态监控
- 支持网络状态变化的即时响应

### 2. 用户体验优化
- 平滑的界面过渡动画
- 清晰的权限说明和操作指引
- 支持多语言本地化

### 3. 错误处理
- 网络检查失败时的重试机制
- 优雅的降级处理

### 4. 性能优化
- 异步网络检查，不阻塞主线程
- 合理的检查时机和频率

## 测试建议

### 1. 网络权限测试
- 关闭设备网络连接，验证权限请求界面显示
- 重新开启网络，验证自动继续启动流程
- 测试"重新检查"和"打开设置"按钮功能

### 2. 多语言测试
- 切换系统语言，验证界面文本正确显示
- 测试中英文界面的布局和功能

### 3. 边界情况测试
- 网络状态快速变化时的处理
- 应用在后台时网络状态变化
- 长时间无网络时的用户体验

## 注意事项

1. **网络权限说明**: iOS 应用默认具有网络访问权限，此功能主要用于检测网络连接状态
2. **用户体验**: 权限请求界面设计简洁明了，避免用户困惑
3. **性能影响**: 网络监控对性能影响很小，但建议在不需要时及时停止监控
4. **兼容性**: 支持 iOS 15.6+ 系统版本

## 后续优化建议

1. **网络质量检测**: 可以添加网络质量检测，区分网络不可用和网络质量差
2. **离线模式**: 可以考虑添加离线模式支持
3. **网络状态缓存**: 可以缓存网络状态，减少重复检查
4. **更多权限检查**: 可以扩展支持其他权限检查，如相机、相册等
