起因
去年我爸确诊高血压,医生让每天记血压。我给他试了七八个 App,结果老人家用了两天就不记了。原因很简单:打开 App → 点加号 → 弹出数字键盘 → 输三个数 → 点保存,这个流程对一个 60 多岁的人来说太繁琐了。
所以我决定自己做一个。核心目标就一个:把录入时间压到 3 秒以内。
拨轮交互:为什么不用键盘
说白了,血压就三个数字——收缩压、舒张压、脉搏。体重就一个数字。这种场景下数字键盘是过度设计。
我最终做了一个物理阻尼拨轮。类似 iOS 原生的 DatePicker 滚轮,但我针对血压范围做了定制:收缩压默认停在 120 附近,舒张压停在 80 附近,用户打开直接微调就行。大部分情况转一两格就录完了。
试了三个方案:
- 第一版用的 SwiftUI 原生 Picker,太丑,而且滚动手感像塑料;
- 第二版自己用 UIScrollView 写了一个 UIKit 组件桥接过来,手感好了,但代码维护成本太高;
- 最终版用纯 SwiftUI 的 DragGesture + 物理弹簧动画模拟阻尼感,效果和代码量都能接受。
实测下来,我爸从打开 App 到保存一条血压记录,平均 6-8 秒。对比之前用数字键盘的 App 要 20 多秒,提升明显。
数据模型的取舍
一条健康记录我最终定义成这样:
@Model
final class HealthRecord {
var id: UUID
var timestamp: Date
var systolic: Int?
var diastolic: Int?
var pulse: Int?
var weight: Double?
var note: String?
var tagIDs: [String]
var profileID: String = "default"
}
所有字段都是 Optional。这个决定纠结了挺久——要不要把血压和体重拆成两个 Model?最终没拆,因为用户可能同一时间既量血压又称体重,拆开反而要处理关联关系。用一个扁平结构,查询和展示都简单很多。
profileID 是后来加的多人档案支持。我给我妈也建了一个档案,一个 App 管两个人的数据,切换起来跟切微信账号差不多。
状态印章:把干预行为和数据关联起来
光记数字没用,医生还想知道"吃药了没"、"今天运动了没"。
我做了一个叫"状态印章"的功能,本质就是给每条记录打 tag。默认提供了几个常用的:
extension StatusTag {
static let defaults: [StatusTag] = [
StatusTag(id: "pill", name: "降压药", sfSymbolName: "pills.fill", colorHex: "#007AFF", orderIndex: 0),
StatusTag(id: "exercise", name: "运动", sfSymbolName: "figure.run", colorHex: "#FF9500", orderIndex: 2),
StatusTag(id: "coffee", name: "黑咖啡", sfSymbolName: "cup.and.saucer.fill", colorHex: "#A2845E", orderIndex: 4),
]
}
录入的时候底部一排印章图标,点一下就关联上了,不点就跳过。这样看趋势图的时候能直观看到:"这天血压高了,哦原来忘吃药了"。
PDF 就医报告这个功能是被逼出来的
我爸有次去复诊,医生问"最近血压怎么样",他掏出手机给医生看 App 里的折线图。医生瞄了一眼说"你把数据打印出来下次带过来吧"。
那次之后我就加了 PDF 导出。选一个时间范围,一键生成一份带表格和趋势图的报告,格式参考了医院里那种血压监测单。生成完直接系统分享,打印或者发微信都行。
说实话这个功能开发量不大(用的 iOS 原生 PDFKit),但它解决了一个很实际的问题:数据记了,医生看不懂你的 App 界面。
Siri 快捷指令:给懒人一条活路
后来我加了 AppIntents 支持,用户可以对 Siri 说"用健康手账记录健康数据",直接弹出录入界面。或者放一个快捷指令 Widget 在桌面,点一下就开始录。
这个对每天固定时间测血压的人挺有用——早上量完血压,顺手点一下就录了,不用翻 App。
隐私和商业模式
所有数据用 SwiftData 存在本地,可选开 iCloud 同步(多设备用户需要)。没有服务器,没有账号体系,没有数据上传。
商业模式是买断制解锁 Pro。对于高血压这种需要长期甚至终身记录的场景,订阅制我觉得不太厚道。买断一次,用十年,我心安。
目前的情况
App 上架一个多月了,说实话数据不太好看,下载量很低。可能是因为这个品类竞争太激烈,App Store 搜"血压记录"出来一堆。
我在想是不是应该换个推广思路,比如主打"帮父母记录"这个场景,让年轻人去下载然后配到父母手机上。
对了,这个 App 叫「健康手账」,如果你家里也有需要长期记血压或体重的长辈,可以去 App Store 搜一下,ID 是 6761605717。
有什么关于健康类 App 开发的问题,或者独立开发商业化的想法,评论区聊聊。