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

181 lines
6.4 KiB
Markdown

# YuMi iOS 项目 API 请求配置分析
## 📋 目录
- [主机地址配置](#主机地址配置)
- [网络基础配置](#网络基础配置)
- [自定义HTTP Headers](#自定义http-headers)
- [默认请求参数](#默认请求参数)
- [安全签名机制](#安全签名机制)
- [请求内容类型](#请求内容类型)
- [SSL安全配置](#ssl安全配置)
- [特殊功能](#特殊功能)
- [应用信息配置](#应用信息配置)
## 🌐 主机地址配置
| 环境 | 地址 | 说明 |
|------|------|------|
| 生产环境 | `https://api.epartylive.com` | 正式服务器 |
| 测试环境 | `http://beta.api.molistar.xyz` | 开发测试服务器 |
| 图片服务 | `https://image.hfighting.com` | 静态资源服务器 |
**环境切换机制:**
- 通过 `kIsProductionEnvironment` 用户偏好设置控制
- DEBUG 模式下可动态切换环境
- 发布版本强制使用生产环境
## 🔧 网络基础配置
```objective-c
// 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 请求都会自动添加以下基础参数:
```objective-c
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. **参数过滤**: 移除系统级参数
```objective-c
// 被移除的参数
@[@"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` 参数名添加到请求中
## 📊 请求内容类型
支持的响应内容类型:
```objective-c
@"application/json" // 主要 JSON 响应
@"text/json" // JSON 文本格式
@"text/javascript" // JavaScript 格式
@"text/html" // HTML 响应
@"text/plain" // 纯文本
@"image/jpeg" // JPEG 图片
@"image/png" // PNG 图片
```
## 🛡️ SSL安全配置
```objective-c
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = NO; // 不允许无效证书
manager.securityPolicy.validatesDomainName = YES; // 验证域名
```
## ⚡ 特殊功能
### 1. 网络状态检测
- 自动检测网络连接状态
- 离线时立即返回失败回调
- 避免无效请求
### 2. 动态超时设置
```objective-c
// 通过参数动态设置超时时间
@{@"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 请求的安全性、稳定性和高性能,为应用提供了可靠的网络服务基础。