You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.2 KiB
141 lines
4.2 KiB
# 网络权限检查功能实现说明
|
|
|
|
## 功能概述
|
|
|
|
在 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. **更多权限检查**: 可以扩展支持其他权限检查,如相机、相册等
|