Skip to content

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实时通信

核心模块

  1. TabBar 模块:应用的主要导航结构,管理首页、OTC、现货交易和钱包等主要功能模块的切换。

  2. 首页模块:显示资产概览、市场行情、公告信息等内容,是用户进入应用的第一个界面。

  3. 现货交易模块:提供加密货币的现货交易功能,包括交易对选择、限价/市价订单、深度图表等。

  4. OTC 交易模块:提供法币与加密货币之间的场外交易功能,支持多种法币和支付方式。

  5. 钱包模块:管理用户的数字资产,包括充值、提现、转账、交易历史等功能。

技术特点

多语言支持

应用支持多语言切换功能,目前包括:

  • 英文 (en)
  • 简体中文 (zh-Hans)
  • 繁体中文 (zh-HK)

语言切换通过AppSettings类管理,使用通知机制在切换语言时更新 UI:

swift
// 语言切换通知
static let languageDidChangeNotification = NSNotification.Name("LanguageDidChangeNotification")

// 切换语言
func switchLanguage(to language: Language, completion: (() -> Void)? = nil)

主题模式

应用支持浅色和深色主题,以及跟随系统设置:

swift
// 主题颜色定义
class ThemeColor: NSObject {
    // 背景色
    @objc static var backgroudColor: UIColor = HKBDarkModeUtil.colorLightDark(light: DFW_ColorFromHexColor(hexColor: "#FFFFFF"), dark: DFW_ColorFromHexColor(hexColor: "#010101"))

    // 其他主题颜色...
}

主题切换通过HKBDarkModeUtil类管理,并通过 Flutter 通道同步主题状态:

swift
// 更新主题
func updateTheme(_ theme: Int) {
    self.channel?.invokeMethod("updateTheme", arguments: theme)
}

网络通信

HTTP 请求

使用HKBHttpReqeustManager类处理 HTTP 请求,基于 AFNetworking 封装:

swift
// 发送请求
func request(withUrl url: String, method: HTTPMethod, parameters: [String : Any]?, success: @escaping SuccessBlock, failure: @escaping FailureBlock) -> URLSessionDataTask?

WebSocket 实时通信

使用自定义的MKWebSocketClient类处理 WebSocket 连接,基于 SocketRocket 实现:

objective-c
// WebSocket客户端单例
+ (instancetype)sharedInstance;

// 连接管理
- (void)connect;
- (void)reConnect;
- (void)disconnect;

// 数据发送
- (void)sendData:(NSString *)data;
- (void)sendMessage:(NSString *)data;

WebSocket 模块支持多代理模式,可以同时向多个业务模块分发消息:

objective-c
// 添加/移除代理
- (void)addDelegate:(id<MKWebSocketClientDelegate>)delegate;
- (void)removeDelegate:(id<MKWebSocketClientDelegate>)delegate;

Flutter 集成

应用集成了 Flutter 模块,通过HKBFlutterChannelManager管理 Flutter 与原生代码的通信:

swift
// 更新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

安装和运行

  1. 克隆 Hkbitex IOS 和 Exchange Hkbitex OTC Flutter 的项目代码到同一个文件夹下
  2. cd 到 Hkbitex IOS 工程下,安装依赖:pod install
  3. 使用 Xcode 打开生成的.xcworkspace文件
  4. 编译并运行项目

注意事项

  • 项目使用 Swift 和 Objective-C 混合开发,需要注意两种语言之间的桥接
  • WebSocket 连接需要保持稳定,应处理网络状态变化和自动重连
  • 多语言和主题切换需要在整个应用中保持一致性

🚀 构建现代化数字资产交易平台