整体初步介绍
我们的架构设计旨在提供可扩展性、可维护性和可测试性。我们采用了一些常见的iOS架构模式和最佳实践:如MVC(Model-View-Controller)、MVVM(Model-View-ViewModel)等,以确保代码的组织结构清晰,并且易于开发和维护。
项目整体上架构上 按照MVC的思想:
数据层-> 传输层 ->逻辑业务层->视图层。
数据层
沙盒存储
沙盒是指应用程序运行时分配给应用程序的一个独立文件系统空间,该空间被隔离并且只能由应用程序本身进行访问,我们再沙盒储存了文件信息,用户的缓存信息,小程序的本地存储。在用户删除缓存,卸载app的时候给与删除。
钥匙串存储
我们将傲空间的一些傲空间少量信息储存在了系统密钥中,防止用户删除App后,重新安装需要重新进行绑定流程。如果卸载app后,可以保留盒子的绑定信息,重新安装后,继续使用绑定过的盒子,不需要重新绑定。
DB存储
构建本地的数据库,支持对象存储。把文件信息等用来持久化存储本地信息,文件信息等。支持多个盒子的数据存储,后台接口信息存储成iOS端数据库的数据表,为后续本地化优先提供支持。在这里我们引入了WCDB(wechat dataBase)组件),通过WINQ,拼接SQL的字符串而写一大坨胶水代码。支持ORM(Object Relational Mapping),开发者可以很便捷地定义表、索引、约束,并进行增删改查操作。
传输层
蓝牙通道
由于App启动的时候,需要绑定盒子,所以我们进行与我们的傲空间系统进行交互,使用蓝牙通道进行数据交换。盒子到进行构建蓝牙通道,进行数据传输,绑定流程,交换秘钥,平台切换等操作。我们同时定义了多个特征码,进行统一通道的不同信息流的交换,并且支持订阅,支持的读取文件分批传输。
在蓝牙通道的构建过程中,我们首先需要发现盒子设备。通过使用蓝牙扫描功能,我们能够搜索到附近的盒子设备,并获取其相关信息。
绑定流程中的关键步骤之一是秘钥交换。通过蓝牙通道,我们能够安全地进行秘钥的交换,以确保通信的安全性和保密性。我们支持了字段分批传输的功能,通过蓝牙将大数据分成多个片段进行传输。
接下来,我们定义了多个特征码,用于在统一通道上进行不同信息流的交换。这些特征码允许我们在蓝牙通道中发送和接收各种指令和数据,以满足绑定流程和其他操作的需求。
此外,傲空间App还支持平台切换功能。也是利用蓝牙通道,进行信息交换,使用户可以自定义平台,与傲空间官方平台,完全独立解耦,更加保证用户隐私安全性。
局域网通道
局域网通道:增加用户安全性和提供更快的数据传输速度,局域网通道利用Bonjour和MDNS来获取盒子的IP地址,直接与傲空间系统进行连接。
局域网通道具备与蓝牙通道的备用通道的,可以支持绑定流程、秘钥交换、平台切换等操作。
并且,局域网通道的一个显著优势是传输速度更快。支持大文件传输,当设备处于同一局域网内时,通过局域网通道进行数据传输可以获得最大的传输速度。这为用户带来了更好的使用体验,并为系统的可靠性和稳定性提供了增强。
P2P通道
P2P通道:允许应用和盒子之间直接进行点对点的通信,无需依赖其他中间节点,从而实现更高效
直接进行数据交换,直接的点对点通信方式具有以下优势:
高效传输:由于避免了中间过程的转发,P2P通道能够实现更快速、低延迟的数据传输。数据可以直接从应用发送到盒子,实现实时性要求较高的功能。
去中心化:P2P通道不需要依赖中心化的服务器或中间节点来进行数据传输。应用和盒子直接建立连接,实现直接的点对点通信,从而减少了单点故障的风险,提高了系统的可靠性和稳定性。
隐私保护:由于P2P通道是应用和盒子之间的直接连接,数据传输可以在两者之间进行加密,增强了数据的安全性和隐私保护。
通过引入P2P通道,我们能够进一步提升应用与盒子之间的通信效率和性能,实现更快速、实时的数据传输。这为用户带来了更好的使用体验,并为应用的功能扩展和创新提供了更多可能性。
长链接通道
长链接通道:它能够提供实时的、双向的数据传输。与传统的HTTP请求相比,长连接不需要频繁地建立和断开连接,而是可以一次建立连接后持续通信,减少了通信的开销和延迟。在客户端和服务器之间建立一个持久的、双向的通信通道。用来实时获取小程序服务日志等信息等。
网络库 Https链接:
日常接口调用,使用Https进行请求,这部分在日常App中比较常见,包含了网关call接口调用,进行了路由封装,我们适配了开发dev环境,sit测试环境,rc仿真环境和生产环境,除了Https自带的SSH通道外,也是用RSA和AES混合进行数据加密解密,保证传输数据安全。
安全方面:
包含应用锁,安全密码,公私钥凭证,加密算法等来保证数据安全。
业务层
首页:个人动态,记录日常造作。
文件操作:文件上传下载,删除,重命名,复制,新建文件夹,排序等操作,文件分享。
智能相册:智能整理相片。帮助您更好的整理回忆。
开发者选项&应用商店:多款应用,更多的功能。
绑定列表:支持APP绑定多个盒子,邀请多个成员,对其他手机或Web页面授权。
UI方面:
- 我们对每个文字颜色适配了暗黑模式。
- 对App进行了国际化处理,包含了2000多个字段的中英文。
- 对图片使用了缓存管理,确保每张图片之下载一次。