HKbitEX iOS 客户端
项目概述
HKbitEX 是一个加密货币交易平台的 iOS 客户端应用,提供数字资产交易、资产管理、行情查看等功能。应用采用 Swift 和 Flutter 混合开发,支持多语言和主题切换,具有完善的网络请求和 WebSocket 实时数据通信机制。
技术架构
技术架构采用的是 native 和 flutter 技术栈混编 Hkbitex IOS:是一个基于 Flutter 技术栈的混合开发项目,包含了原生 iOS 代码和 Flutter 代码。 Exchange Hkbitex OTC Flutter: 工程是一个 Flutter 工程,用于实现 Hkbitex 中的划转功能。 Hkbitex Js Bridge :工程是一个桥接工程,用于将前端 H5 和 Native 之间的通信进行桥接。
项目结构
HKbitEX/
├── Appdelegate/ # 应用程序入口和生命周期管理
├── Base/ # 基础组件和基类
├── Buisness/ # 业务模块
│ ├── HomeComponent/ # 首页模块
│ ├── OtcComponent/ # OTC交易模块
│ ├── SpotComponent/ # 现货交易模块
│ ├── Tabbar/ # 底部标签栏
│ ├── UserComponet/ # 用户中心模块
│ └── WalletsComponent/ # 钱包资产模块
├── Components/ # 通用UI组件
├── Flutter/ # Flutter集成
├── Kernel/ # 核心功能
│ ├── AddressDomain/ # 域名管理
│ ├── Appearance/ # 外观和主题
│ ├── Language/ # 多语言支持
│ └── ...
├── Network/ # 网络请求
├── Resources/ # 资源文件
└── WebSocket/ # WebSocket实时通信核心模块
TabBar 模块:应用的主要导航结构,管理首页、OTC、现货交易和钱包等主要功能模块的切换。
首页模块:显示资产概览、市场行情、公告信息等内容,是用户进入应用的第一个界面。
现货交易模块:提供加密货币的现货交易功能,包括交易对选择、限价/市价订单、深度图表等。
OTC 交易模块:提供法币与加密货币之间的场外交易功能,支持多种法币和支付方式。
钱包模块:管理用户的数字资产,包括充值、提现、转账、交易历史等功能。
技术特点
多语言支持
应用支持多语言切换功能,目前包括:
- 英文 (en)
- 简体中文 (zh-Hans)
- 繁体中文 (zh-HK)
语言切换通过AppSettings类管理,使用通知机制在切换语言时更新 UI:
// 语言切换通知
static let languageDidChangeNotification = NSNotification.Name("LanguageDidChangeNotification")
// 切换语言
func switchLanguage(to language: Language, completion: (() -> Void)? = nil)主题模式
应用支持浅色和深色主题,以及跟随系统设置:
// 主题颜色定义
class ThemeColor: NSObject {
// 背景色
@objc static var backgroudColor: UIColor = HKBDarkModeUtil.colorLightDark(light: DFW_ColorFromHexColor(hexColor: "#FFFFFF"), dark: DFW_ColorFromHexColor(hexColor: "#010101"))
// 其他主题颜色...
}主题切换通过HKBDarkModeUtil类管理,并通过 Flutter 通道同步主题状态:
// 更新主题
func updateTheme(_ theme: Int) {
self.channel?.invokeMethod("updateTheme", arguments: theme)
}网络通信
HTTP 请求
使用HKBHttpReqeustManager类处理 HTTP 请求,基于 AFNetworking 封装:
// 发送请求
func request(withUrl url: String, method: HTTPMethod, parameters: [String : Any]?, success: @escaping SuccessBlock, failure: @escaping FailureBlock) -> URLSessionDataTask?WebSocket 实时通信
使用自定义的MKWebSocketClient类处理 WebSocket 连接,基于 SocketRocket 实现:
// WebSocket客户端单例
+ (instancetype)sharedInstance;
// 连接管理
- (void)connect;
- (void)reConnect;
- (void)disconnect;
// 数据发送
- (void)sendData:(NSString *)data;
- (void)sendMessage:(NSString *)data;WebSocket 模块支持多代理模式,可以同时向多个业务模块分发消息:
// 添加/移除代理
- (void)addDelegate:(id<MKWebSocketClientDelegate>)delegate;
- (void)removeDelegate:(id<MKWebSocketClientDelegate>)delegate;Flutter 集成
应用集成了 Flutter 模块,通过HKBFlutterChannelManager管理 Flutter 与原生代码的通信:
// 更新Flutter主题
func updateTheme(_ theme: Int) {
self.channel?.invokeMethod("updateTheme", arguments: theme)
}
// 更新Flutter语言
func updateLanguage(_ language: String) {
self.channel?.invokeMethod("updateLanguage", arguments: language)
}主要功能模块
首页 (HKBHomeViewController)
首页模块显示用户资产概览、市场行情和平台公告,是用户获取信息的主要入口。
主要功能:
- 资产总览
- 市场行情列表
- 平台公告和活动
- 快捷交易入口
现货交易 (HKBSpotViewController)
现货交易模块提供加密货币交易功能,支持多种交易对和订单类型。
主要功能:
- 交易对选择
- 限价/市价订单
- 深度图和 K 线图
- 订单管理
OTC 交易 (HKBOtcViewController)
OTC 模块提供法币与加密货币之间的场外交易功能。
主要功能:
- 法币买卖加密货币
- 多种支付方式
- 订单管理
- 交易安全保障
钱包 (HKBWalletsViewController)
钱包模块管理用户的数字资产,包括充值、提现和资产转移功能。
主要功能:
- 资产总览
- 充值和提现
- 资金划转
- 交易历史记录
开发环境要求
- Xcode 13.0+
- iOS 13.0+
- Swift 5.0+
- CocoaPods
安装和运行
- 克隆 Hkbitex IOS 和 Exchange Hkbitex OTC Flutter 的项目代码到同一个文件夹下
- cd 到 Hkbitex IOS 工程下,安装依赖:
pod install - 使用 Xcode 打开生成的
.xcworkspace文件 - 编译并运行项目
注意事项
- 项目使用 Swift 和 Objective-C 混合开发,需要注意两种语言之间的桥接
- WebSocket 连接需要保持稳定,应处理网络状态变化和自动重连
- 多语言和主题切换需要在整个应用中保持一致性
