近期开发并上架了新版心率管家 App(仅 iOS 端),专业版不定期限免,欢迎下载体验。本文将从设计、开发、上架等每个步骤和细节进行分享,也包含部分模块源码。
立项的初衷是满足随时测心率的需求(没有智能手环手表的人群),App 核心功能就是测量心率,围绕这个功能展开的是测量时更多细节的记录、对已有数据的筛选。再往深度挖掘的是数据分析、健康预测。
虽然 AppStore 已有,但是无一例外都特别丑,要么收费要么有广告,所以不如自己做一个。
光电容积脉搏波描记法(PPG)
是追踪可见光(通常为绿光)在人体组织中的反射。它具备一个可见光光源来照射皮肤,再使用光电传感器采集被皮肤反射回来的光线。PPG 有两种模式,透射式和反射式,像一般的手环手表这样,光源和传感器在同一侧的,就是反射式;而医院中常见的夹在指尖上的通常是透射式的,即光源和传感器在不同侧。 皮肤本身对光线的反射能力是相对稳定的,但是心脏泵血使得血管容积周期性地变化,导致反射光也呈现出周期性的波动值,特别是在指尖这种毛细血管非常丰富的部位,这种周期性的波动很容易被观察到。
Wikipedia: #Photoplethysmogram
对应到 App 上就是通过分析摄像头每一帧画面的色值,计算出颜色波动的频率,即为近似心率。
语言:Swift5
设计模式:MVC
路由方案:JLRoutes
主题和UI管理:Inspire
缓存方案:SQLite
数据同步方案:暂定AppleHealth
初期使用 Sketch 制作效果图,在后期直接在项目中进行调整,没有再更新到 Sketch 中。下面这是最终发布到 AppStore 的应用截图:
心率测量功能开发为一个私有库,具体实现稍后补充。。。
使用 Inspire 作为主题管理器,目前暂未支持主题切换,后续更新会加入。
使用 JLRoutes 路由方案,目前支持 URLSchemes 启动并开始测量,可接受两个参数:
// 直接启动 |
免费版限制了自定义亮度,但是你依然可以通过这种方式来自定义。
使用 ProHUD 来负责弹窗和操作表,包括隐私政策页面。
新建应用,填写名称、BundleId 等资料,然后在 App 页面填写描述、网址、隐私政策链接、上传截图、确定分级……
待应用通过 testflight 测试无误后,打包上传。然后过几分钟 appstoreconnect 页面就可以选中刚才上传的包了,然后提交审核,第二天就审核通过。(现在 AppStore 新应用审核也太快了)
后续迭代中会在测量详情页面下方的留白处加上【标签】、【备注】、【数据分析】模块,前两者利于检索数据,数据分析目前没有能力独自完成,计划使用第三方服务。
图标
这是一次彻底重做,所以也可以算是初版。很多细节还比较粗糙,例如图标没有经过打磨,设置列表连图标都没有。
占位图
很多页面在没有数据的时候也没有占位的图片,这个也会慢慢完善。
心率区间
心率卡片的颜色、心率卡片右上角以及归档页面心率的底部的彩色长条代表的是当前所处的心率区间,App 中并没有说明,后续迭代中也会完善这里。并且心率区间的划分需要年龄和性别,这个也会在后期进行完善。