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.
4.2 KiB
4.2 KiB
网络权限检查功能实现说明
功能概述
在 LaunchScreenView 中实现了网络权限检查功能,如果用户没有授权网络权限,应用会停留在启动界面并提示用户授权。
实现的功能
1. 网络权限管理器 (NetworkPermissionManager)
文件位置: MyQrCode/Utils/NetworkPermissionManager.swift
主要功能:
- 使用
NWPathMonitor
实时监控网络状态 - 提供网络权限检查方法
- 支持打开系统设置页面
- 发布网络状态变化通知
核心属性:
@Published var isNetworkAvailable = false // 网络是否可用
@Published var isCheckingNetwork = true // 是否正在检查网络
@Published var showNetworkPermissionAlert = false // 是否显示权限提示
2. 网络权限请求界面 (NetworkPermissionView)
主要组件:
- 网络图标 (wifi.slash)
- 权限说明文本
- 重新检查按钮
- 打开设置按钮
交互功能:
- 点击"重新检查"按钮重新检测网络状态
- 点击"打开设置"按钮跳转到系统设置
- 网络恢复后自动继续启动流程
3. 启动界面集成 (LaunchScreenView)
修改内容:
- 添加网络权限检查逻辑
- 集成 NetworkPermissionView
- 支持网络权限获取后的回调
启动流程:
- 显示正常的启动动画 (2秒)
- 检查网络权限状态
- 如果网络不可用,显示权限请求界面
- 如果网络可用,继续启动流程
本地化支持
中文 (zh-Hans.lproj/Localizable.strings)
"network_permission_required" = "网络权限需要";
"network_permission_description" = "应用需要网络权限来提供完整的服务功能";
"check_network" = "重新检查";
"checking_network" = "检查中...";
"open_settings" = "打开设置";
"initializing" = "正在初始化...";
英文 (en.lproj/Localizable.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 中的集成
LaunchScreenView {
hideLaunchScreen()
}
网络权限检查流程
- 应用启动时显示启动界面
- 2秒后开始检查网络权限
- 如果网络不可用,显示权限请求界面
- 用户可以通过以下方式解决:
- 点击"重新检查"按钮
- 点击"打开设置"按钮跳转到系统设置
- 手动开启网络连接
- 网络恢复后自动继续启动流程
技术特点
1. 实时网络监控
- 使用
NWPathMonitor
进行实时网络状态监控 - 支持网络状态变化的即时响应
2. 用户体验优化
- 平滑的界面过渡动画
- 清晰的权限说明和操作指引
- 支持多语言本地化
3. 错误处理
- 网络检查失败时的重试机制
- 优雅的降级处理
4. 性能优化
- 异步网络检查,不阻塞主线程
- 合理的检查时机和频率
测试建议
1. 网络权限测试
- 关闭设备网络连接,验证权限请求界面显示
- 重新开启网络,验证自动继续启动流程
- 测试"重新检查"和"打开设置"按钮功能
2. 多语言测试
- 切换系统语言,验证界面文本正确显示
- 测试中英文界面的布局和功能
3. 边界情况测试
- 网络状态快速变化时的处理
- 应用在后台时网络状态变化
- 长时间无网络时的用户体验
注意事项
- 网络权限说明: iOS 应用默认具有网络访问权限,此功能主要用于检测网络连接状态
- 用户体验: 权限请求界面设计简洁明了,避免用户困惑
- 性能影响: 网络监控对性能影响很小,但建议在不需要时及时停止监控
- 兼容性: 支持 iOS 15.6+ 系统版本
后续优化建议
- 网络质量检测: 可以添加网络质量检测,区分网络不可用和网络质量差
- 离线模式: 可以考虑添加离线模式支持
- 网络状态缓存: 可以缓存网络状态,减少重复检查
- 更多权限检查: 可以扩展支持其他权限检查,如相机、相册等