# Yana iOS 项目 ## 项目简介 Yana 是一个基于 iOS 平台的即时通讯应用,使用 Swift 语言开发,集成了网易云信 SDK 实现即时通讯功能,并采用 The Composable Architecture (TCA) 架构设计。 ## 技术栈 - **开发语言**:Swift (主要),Objective-C (部分组件) - **最低支持版本**:iOS 17 - **架构模式**:The Composable Architecture (TCA) - 1.20.2 - **UI 框架**:SwiftUI - **依赖管理**: - CocoaPods - Swift Package Manager - **主要框架**: - NIMSDK_LITE:网易云信即时通讯 SDK (10.6.1) - NEChatKit:聊天核心组件 - NEChatUIKit:会话(聊天)UI 组件 - NEContactUIKit:通讯录 UI 组件 - NELocalConversationUIKit:本地会话列表 UI 组件 - Alamofire:网络请求框架 - ComposableArchitecture:状态管理 (v1.20.2+) - CasePaths:枚举模式匹配 ## 项目结构 ``` yana/ ├── yana/ # 主应用源代码 │ ├── Info.plist │ ├── yana-Bridging-Header.h # Objective-C 集成桥接头文件 │ ├── AppDelegate.swift # 应用程序代理 │ ├── yanaApp.swift # SwiftUI 应用入口 │ ├── ContentView.swift # 主视图 │ ├── Managers/ # 管理器类 │ ├── Models/ # 数据模型 │ ├── Configs/ # 配置文件 │ ├── APIs/ # API 相关文件 │ └── Assets.xcassets/ # 资源文件 ├── yanaAPITests/ # API 测试目标 └── Pods/ # CocoaPods 依赖 ``` ## 环境要求 - Xcode 13.0 或更高版本 - iOS 17 或更高版本 - CocoaPods 包管理器 ## 安装步骤 1. 克隆项目到本地 2. 在项目根目录执行: ```bash pod install ``` 3. 打开 `yana.xcworkspace` 文件 4. 编译运行项目 ## 主要功能 - **用户认证**: - 邮箱登录流程(带验证码) - 多种认证方式 - **即时通讯** - **会话管理** - **通讯录管理** - **本地会话列表** - **云存储集成** ## UI 组件 项目包含多种自定义 UI 组件: - 自定义登录按钮 - 底部标签导航 - API 调用加载效果 - Web 视图集成 - 图片预览功能 - 屏幕适配工具 ## API 使用 项目提供了完整的 API 架构,基于 TCA (The Composable Architecture) 设计: - 📖 **[API 使用指南](API-README.md)** - 完整的 API 使用文档 - 🔧 **[API 规则详解](yana/APIs/API%20rule.md)** - API 请求配置和安全机制 - 🚀 **[集成指南](yana/APIs/Integration-Guide.md)** - API 集成和最佳实践 ### 快速开始 ```swift // 基本 API 请求示例 let apiService = LiveAPIService() let request = ConfigRequest() let response = try await apiService.request(request) ``` ## 注意事项 - 项目使用 CocoaPods 管理依赖 - 需要配置网易云信相关密钥 - 最低支持 iOS 17 版本 - 仅支持 iPhone 设备(不支持 iPad、Mac Catalyst 或 Vision Pro) ## 开发规范 - 遵循 Swift 官方编码规范 - 使用 SwiftUI 构建用户界面 - 采用 TCA 架构模式 - 支持多语言(包含中文本地化) ## 测试 项目包含专门的 API 测试目标 "yanaAPITests",用于对主应用的 API 功能进行单元测试。 ## 开发团队 项目由团队 "EKM7RAGNA6" 开发,测试目标的包标识符为 "com.stupidmonkey.yanaAPITests"。 ## 构建配置 - 项目使用动态框架 - 支持 iOS 17 及以上版本 - Swift 版本:6.0 - 已配置框架冲突处理脚本 -