BAB 项目概览
产品背景

一个海外品牌的
智能健身入口。

BAB 是倍益康为 Bob & Brad 定制的 iOS IoT 应用,把训练内容、按摩枪、跳绳、电商和门店导航收进同一套移动端体验。

这个项目的重点不是单个页面堆功能,而是如何在品牌独立、服务端独立的前提下复用国内 App 的网络、蓝牙和业务内核,同时把海外版产品定位做清楚。

平台
iOS 13.0+,Swift 5 + Objective-C 桥接
架构
UIKit + Storyboard / XIB,MVC 组织
范围
训练计划、BLE 设备、电商 SKU、地图导航、用户系统
一套内核,多处沉淀
技术
内核
Moya BLE SKU 地图

海外版不是重写 App,而是在独立品牌、独立服务端和独立资源下复用成熟能力。

可证明的工程产出
复用

Moya 网络抽象、PromiseKit 异步链、BLE 管理器和模型序列化继续作为基础能力。

扩展

D6 按摩枪、ROP 跳绳和通用筋膜枪通过协议路由接入同一个连接中枢。

闭环

商城覆盖商品、SKU、收藏、门店、距离计算和第三方地图跳转。

沉淀

选择器、底部菜单、加载空态、Lottie 反馈和 375pt 适配继续服务多模块页面。

结果与沉淀

先给读者看到,
这个项目留下了什么。

BAB 的价值不是把功能堆进海外版,而是把网络、蓝牙、电商、地图和体验组件沉淀成可复用能力。

品牌
独立部署,但不重复造轮子。

Bundle ID、服务器、资源和品牌皮肤独立,核心通信、网络和模型能力保持复用。

业务
训练、设备、商城和内容形成闭环。

用户从计划进入设备使用,再被电商、百科和门店服务承接,业务不是孤立页面。

证据
后面的章节都在展开证明。

系统难点、BLE 协议和 SKU/地图链路分别证明复用、扩展和业务完整度。

System pressure 它不是简单换皮,而是多业务入口同时复用一套底层能力。

品牌要独立,服务端要独立,但网络、蓝牙、用户态、定位和组件能力不能被重新拆散。

Device 多设备多协议

D6、ROP、Mini 和 HL2/HM3 的协议格式不同,但扫描、连接和状态反馈要统一调度。

Business 训练优先

首页不是设备列表,而是训练计划。信息架构必须支撑“内容驱动设备使用”。

系统难点

难点不在功能多,
而在边界要稳。

定位
训练计划成为首页。

这让 Bob & Brad 的“内容驱动硬件使用”变成信息架构,而不是一句品牌口号。

复用
共享核心技术栈。

网络抽象、蓝牙协议、异步链和模型序列化不重写,只在品牌、端点和资源上隔离。

边界
5 个 Tab 各自维护导航栈。

计划、设备、商城、百科和我的独立演进,同时共享登录态、收藏、定位和网络能力。

BLE 设备与协议路由 CoreBluetooth
D6 按摩枪

档位、定时、转速、推力检测、电量和充电状态通过 TLV 帧协议下发与回读。

按摩枪 TLV 协议

Tag-Length-Value 结构化帧让指令、状态与设备能力保持可扩展。

scan · connect · parse · upload
ROP 智能跳绳

自由跳、倒计时、倒计数三种运动模式,分层上报次数、时长、连跳与分段记录。

跳绳头校验协议

帧头校验和操作指令分层解析,任一帧损坏不影响其他帧继续处理。

设备智控

多套协议,
收进一个连接中枢。

路由
按设备类型分发协议实现。

蓝牙管理器只调度扫描、连接和生命周期,具体帧格式由各设备策略类处理。

并行
最多同时连接 2 台设备。

连接池维护外设状态,电量、固件版本和断开重连统一走 CBPeripheralDelegate 回调。

反馈
操作过程需要即时感知。

速度滑块拖动期间防抖下发 BLE 指令,扫描、连接和操作状态用轻量动画反馈。

完整 SKU 规格选择器

规格名、规格值映射和实际库存拆成三层,选择结果实时定位可售 SKU。

规格名
颜色 / 尺寸
规格值
黑色 + L
库存
SKU-128

定价、库存和展示逻辑互相解耦,SKU 变更时前端不需要改动规格定义。

门店到地图导航

定位经纬度注入门店接口,列表按距离排序,详情页根据已安装 App 自动唤起导航。

Apple MapsWGS-84 高德 / 腾讯GCJ-02 百度地图BD-09 Google MapsWGS-84
商城与地图

电商不是列表,
而是一条交易链路。

商品
从 Banner 到详情再到收藏。

Kingfisher 图片加载、分类筛选、商品收藏和 SKU 选择组成完整商城链路。

库存
三级模型处理规格联动。

选择器遍历映射表定位价格和库存状态,避免规格展示与实际可售商品混在一起。

线下
多地图与多坐标系自动转换。

WGS-84、GCJ-02、BD-09 在跳转前完成转换,调用方只关心门店坐标。