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.
MyQRCode/NETWORK_PERMISSION_IMPLEMEN...

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
  • 支持网络权限获取后的回调

启动流程:

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

本地化支持

中文 (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()
}

网络权限检查流程

  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. 更多权限检查: 可以扩展支持其他权限检查,如相机、相册等