Files
e-party-iOS/yana/APIs/API rule.md
edwinQQQ c470dba79c feat: 更新项目配置和功能模块
- 修改Package.swift以支持iOS 15和macOS 12。
- 更新swift-tca-architecture-guidelines.mdc中的alwaysApply设置为false。
- 注释掉AppDelegate中的NIMSDK导入,移除不再使用的NIMConfigurationManager和NIMSessionManager文件。
- 添加新的API相关文件,包括EMailLoginFeature、IDLoginFeature和相关视图,增强登录功能。
- 更新APIConstants和APIEndpoints以反映新的API路径。
- 添加本地化支持文件,包含英文和中文简体的本地化字符串。
- 新增字体管理和安全工具类,支持AES和DES加密。
- 更新Xcode项目配置,调整版本号和启动画面设置。
2025-07-09 16:14:19 +08:00

6.4 KiB

YuMi iOS 项目 API 请求配置分析

📋 目录

🌐 主机地址配置

环境 地址 说明
生产环境 https://api.epartylive.com 正式服务器
测试环境 http://beta.api.molistar.xyz 开发测试服务器
图片服务 https://image.hfighting.com 静态资源服务器

环境切换机制:

  • 通过 kIsProductionEnvironment 用户偏好设置控制
  • DEBUG 模式下可动态切换环境
  • 发布版本强制使用生产环境

🔧 网络基础配置

// AFHTTPSessionManager 优化配置
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.HTTPShouldUsePipelining = YES;        // 启用 HTTP/2 pipelining
configuration.HTTPMaximumConnectionsPerHost = 15;   // 提升并发连接数到15

// 超时设置
manager.requestSerializer.timeoutInterval = 60;     // 默认超时60秒
manager.requestSerializer.HTTPShouldHandleCookies = YES; // 启用Cookie处理

📋 自定义HTTP Headers

认证相关 Headers

Header 名称 值来源 说明
pub_uid [AccountInfoStorage instance].getUid 用户唯一标识符
pub_ticket [AccountInfoStorage instance].getTicket 用户身份认证票据
Accept-Language [NSBundle uploadLanguageText] 用户语言偏好
App-Version PI_App_Version 应用版本号 (1.0.28.1)

压缩相关 Headers

Header 名称 说明
Accept-Encoding "gzip, br" 支持 gzip 和 Brotli 压缩
Content-Encoding "gzip" POST 请求数据压缩
Content-Type "application/json; charset=UTF-8" 特殊接口使用

🎯 默认请求参数

每个 API 请求都会自动添加以下基础参数:

NSDictionary *defaultBasciParame = @{
    @"Accept-Language": [NSBundle uploadLanguageText],     // 界面语言
    @"os": @"iOS",                                         // 操作系统类型
    @"osVersion": [YYUtility systemVersion],               // 系统版本号
    @"netType": ([YYUtility networkStatus] == ReachableViaWiFi) ? @2 : @1, // 网络类型
    @"ispType": @([YYUtility carrierIdentifier]),          // 运营商类型
    @"channel": [YYUtility getAppSource] ?: @"",           // 应用分发渠道
    @"model": [YYUtility modelType],                       // 设备型号
    @"deviceId": [YYUtility deviceUniqueIdentification],   // 设备唯一标识
    @"appVersion": [YYUtility appVersion],                 // 应用版本
    @"app": [YYUtility appName],                          // 应用名称
    @"lang": [YYUtility getLanguage],                     // 语言代码
    @"mcc": [YYUtility getMobileCountryCode]              // 移动国家代码(条件性添加)
};

参数说明

  • netType: WiFi=2, 蜂窝网络=1
  • channel: 默认 "appstore",支持 "TestFlight"
  • mcc: 移动国家代码,值为 "65535" 时不添加

🔐 安全签名机制

签名生成流程

  1. 参数过滤: 移除系统级参数

    // 被移除的参数
    @[@"Accept-Language", @"pub_uid", @"appVersion", @"appVersionCode", 
      @"channel", @"deviceId", @"ispType", @"netType", @"os", 
      @"osVersion", @"app", @"ticket", @"client", @"lang", @"mcc"]
    
  2. 参数排序: 按字典 key 升序排序

  3. 字符串拼接: "key0=value0&key1=value1&key2=value2"

  4. 添加密钥: 拼接 key=PARAMSSECRET

  5. MD5加密: 生成大写 MD5 签名

  6. 添加签名: 以 pub_sign 参数名添加到请求中

📊 请求内容类型

支持的响应内容类型:

@"application/json"     // 主要 JSON 响应
@"text/json"           // JSON 文本格式
@"text/javascript"     // JavaScript 格式
@"text/html"           // HTML 响应
@"text/plain"          // 纯文本
@"image/jpeg"          // JPEG 图片
@"image/png"           // PNG 图片

🛡️ SSL安全配置

manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = NO;    // 不允许无效证书
manager.securityPolicy.validatesDomainName = YES;        // 验证域名

特殊功能

1. 网络状态检测

  • 自动检测网络连接状态
  • 离线时立即返回失败回调
  • 避免无效请求

2. 动态超时设置

// 通过参数动态设置超时时间
@{@"NeedChangeTimeOut": @30}  // 设置30秒超时

3. 数据压缩

  • POST 请求自动进行 Gzip 压缩
  • 减少网络传输数据量
  • 提升请求效率

4. 错误追踪

  • 集成 Bugly 错误上报
  • 5xx 错误自动上报
  • 包含调用堆栈信息

5. 参数解码

  • MSParamsDecode 处理参数加密
  • 自动生成安全签名
  • 保护 API 请求安全

📱 应用信息配置

配置项 说明
应用版本 1.0.28.1 内置版本号
默认渠道 appstore App Store 渠道
测试渠道 TestFlight TestFlight 测试
图片域名 https://image.hfighting.com 静态资源服务

🏗️ 架构特点

  1. 统一管理: HttpRequestHelper 类统一管理所有网络请求
  2. 模块化: API 接口按功能模块分类 (Api+Mine, Api+DressUp 等)
  3. 安全性: 多层安全机制保护 API 调用
  4. 性能优化: HTTP/2 支持、连接复用、数据压缩
  5. 错误处理: 完善的错误处理和上报机制
  6. 环境切换: 支持开发和生产环境无缝切换

📝 总结

YuMi iOS 项目的 API 架构设计了完整的网络请求体系,包含:

  • 🔐 安全机制: 用户认证、参数签名、SSL验证
  • 📊 设备信息: 完整的设备和应用信息收集
  • 性能优化: HTTP/2、连接池、数据压缩
  • 🛠️ 开发支持: 环境切换、错误追踪、调试日志
  • 🏗️ 架构清晰: 模块化设计、统一管理、易于维护

这种设计确保了 API 请求的安全性、稳定性和高性能,为应用提供了可靠的网络服务基础。