smart-home/smart-home-app/README-uni-app网络修复.md
2026-02-26 09:16:34 +08:00

3.3 KiB
Raw Blame History

uni-app网络修复完成

🎯 问题分析

你说得对uni-app的Android网络配置确实不同于原生Android开发。之前的network_security_config.xml方式不适用于uni-app。

uni-app网络问题

  1. Android网络安全策略 - uni-app需要特殊配置允许HTTP
  2. 目标SDK版本 - 高版本SDK默认禁止明文HTTP
  3. 网络权限配置 - uni-app的权限配置方式不同
  4. 请求超时设置 - 移动网络需要更长超时时间

uni-app专用修复方案

1. 修复Android网络配置

文件: manifest.json

"android": {
  "permissions": [...],
  "abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"],
  "targetSdkVersion": 28,        // 降低到28避免严格限制
  "minSdkVersion": 21,
  "usesCleartextTraffic": true   // uni-app专用HTTP配置
}

关键修复:

  • usesCleartextTraffic: true - uni-app允许HTTP的正确方式
  • targetSdkVersion: 28 - 避免Android 9+的严格网络限制
  • 移除了不适用的network_security_config.xml配置

2. iOS ATS配置保持不变

"ios": {
  "plist": {
    "NSAppTransportSecurity": {
      "NSAllowsArbitraryLoads": true
    }
  }
}

3. 增强网络调试功能

  • 添加网络状态检查
  • 创建专用网络诊断工具
  • 增加详细的错误日志
  • 添加网络诊断按钮

🧪 新增诊断工具

1. 网络诊断工具

文件: utils/networkDiagnostic.js

  • 检查网络类型WiFi/移动网络)
  • 测试HTTP连接到ESP32
  • 检查WiFi连接信息
  • 测试外网连接
  • 提供修复建议

2. 设备发现页面增强

  • 添加"📶 网络诊断"按钮
  • 显示网络类型信息
  • 更详细的错误提示
  • 自动网络状态检查

🔧 测试步骤

1. 清除并重新编译

# HBuilderX操作
# 1. 运行 → 清除缓存
# 2. 重新运行到手机

2. 测试网络诊断

  1. 进入设备发现页面
  2. 点击"📶 网络诊断"按钮
  3. 查看网络状态报告

3. 测试设备连接

  1. 手动输入192.168.1.98
  2. 点击连接按钮
  3. 观察是否还有超时错误

📊 预期修复效果

修复前的错误

❌ 接口/api/device/info测试失败: request:fail timeout
❌ 接口/api/status测试失败: request:fail timeout

修复后预期结果

📶 当前网络类型: wifi
🔍 测试接口: http://192.168.1.98:80/api/device/info
✅ 找到可用接口: /api/device/info
✅ 设备连接成功!

💡 uni-app网络配置要点

Android配置差异

配置方式 原生Android uni-app
HTTP允许 network_security_config.xml usesCleartextTraffic: true
权限配置 AndroidManifest.xml manifest.json
目标SDK build.gradle targetSdkVersion

网络请求优化

  • 超时时间: 3秒 → 10秒
  • 请求头: 添加Content-Type和User-Agent
  • 错误处理: 更详细的错误信息
  • 网络检查: 自动检测网络类型

🚀 下一步测试

  1. 重新编译APP - 确保新配置生效
  2. 测试网络诊断 - 点击"📶 网络诊断"查看网络状态
  3. 测试设备连接 - 手动输入IP测试连接
  4. 查看控制台 - 观察详细的网络日志

如果还有问题,网络诊断工具会提供具体的修复建议!🎯