惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
D
Docker
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Simon Willison's Weblog
Simon Willison's Weblog
S
Security Affairs
NISL@THU
NISL@THU
T
Tor Project blog
A
About on SuperTechFans
宝玉的分享
宝玉的分享
腾讯CDC
S
Schneier on Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Privacy & Cybersecurity Law Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
雷峰网
雷峰网
C
Cyber Attacks, Cyber Crime and Cyber Security
Vercel News
Vercel News
Cisco Talos Blog
Cisco Talos Blog
D
DataBreaches.Net
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
L
LINUX DO - 热门话题
Microsoft Security Blog
Microsoft Security Blog
Latest news
Latest news
C
Check Point Blog
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
云风的 BLOG
云风的 BLOG
SecWiki News
SecWiki News
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
月光博客
月光博客
V
Vulnerabilities – Threatpost
T
Threat Research - Cisco Blogs
P
Palo Alto Networks Blog
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
Webroot Blog
Webroot Blog
S
Security @ Cisco Blogs

V2EX - 技术

Local-first 软件收录站 从 X 上搬运来的白嫖 GPT Plus 教程 阿里云百炼 Coding Plan Pro 套餐 新增当日 token 限制 大家的 Claude 弹了 kyc 嘛 现在 Google 的 Gemini 和 AI 模式降智的厉害啊 用的 TAG 家的 T, ip 跳变是否影响使用 claude 同一 apple 账户能给不同 claude 账号充值么 做了个 Go 的 MCP Server 框架,一行代码把 Gin API 接入 AI - V2EX 请教各位,想回归技术,如何系统学习 Agent? OpenAI GPT-IMAGE-2 提示词合集 你是说, claude opus4.6 写代码的能力不如 gpt5.4? 关于智谱 Max 套餐要不要升级续费呢? App → CLI → App ? Github 账号被 404 了,现在没法恢复,求各位大佬指点 cursor 的次数套餐以后应该都用不了新模型了 - V2EX openrouter 使用国外模型 买了咸鱼低价 Gemini pro,账号差点被盗。突然发现国内诈骗成本为零 - V2EX Gemini 手机版客户端登陆总是在此国家/地区无法使用 gemini 感觉 gpt 这些低价渠道要爆了 claude code 和 codex 在 vibe coding 还有质的区别吗? 阿里 Coding Plan 一天三变, Lite 版本到期不能续费了 RAG 难以让人满意啊 2026 年了,这个世界还存在互联网精神🥹 两个账号阵亡,尼区 Claude Pro 订阅 分享下最近低价 GPT Codex 的来源(源头) OpenAI 发布 Codex 重大更新:支持自动操作电脑与长期任务自动化 使用 claude 从 0 开始开发一个校友会系统可行吗 同一个 appleid 可以给不同 chatGPT 账号订阅 plus 吗? 自动驾驶项目开发建议 终于, 降智几天之后, opus4.7 出来了 自己开发了个 VSCODE 扩展,可以接入自定义的模型,并且可以导出 Copilot 的聊天列表到其它设备上导入 - V2EX Claude 这对吗 某鱼上 codex 的价格这么便宜是否有猫腻? 🎉 Claude Opus 4.7 来啦~ 大家体验下来如何? 让 ai 重写了整个 git 的历史,强迫症被拯救了 [分享创造] 写了个自托管的 Chrome 同步服务器,书签密码再也不经过 Google 快讯, Claude Opus 4.7 已经可以使用。 Opus4.7 来了,网页版先上,桌面版本客户端暂时未看到 各位想本地部署大模型的看过来, 有台电脑想转让, 具体请查看截图, 价格请自己开价 这样用 ClaudeCode 怎么样? 我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux - V2EX [调研] 各位在公司都用什么 ide 和 agent 写代码? 丹麦国别域名(.dk)政策变更 - V2EX 目前付费订阅 chatgpt Plus 的最佳方式是什么? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 - V2EX 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? - V2EX 现在还有什么渠道可以稳定安全地使用 Claude 吗? Chatgpt Pro 用量用不完的可以开这些设置 字节为啥不出个国内版 Vercel? 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX Claude Web 端貌似 claude-opus-4-7 偷偷上了? 现在 Apple 开发者帳號應該是用哪个地区会更好? - V2EX ChatGPT Pro 5x 套餐 量真的很足! chrome 最新的 147 版直接卡爆炸了 - V2EX 为什么厂家不在 skill/mcp 这类的工具中塞广告呢?这样不是可以大赚嘛? minimax 真是脸都不要了,工作日下午 14:00 定时开启 529,脸都不要了。训练模型居然占用用户使用时间 iTad 标签 扩展 加小动作 ? - V2EX 去年 H200 能买,不让买是代替快出来了? - V2EX AI 赛事通 - 2026 年 4 月中国区新增 AI 竞赛和黑客松汇总 - V2EX 现在安卓开发都在做啥 - V2EX 浏览器插件 沉浸式翻译 是不支持自定义模型了吗? - V2EX Codex 里的 GPT5.4 也能降智?上午让它改两个问题,改了一个小时了, plus 额度用了一半了还是没改好,和前几天用的体感完全不一样。要它改的问题也不复杂。服了。 目前有使用 claude code 的收到人脸认证的吗 - V2EX 分享一个自己做的 Nginx 管理工具,实时请求动态预览!(无奈市面上实在找不到好用的,自己撸了个) - V2EX claude code 崩了么? 今天在反重力上用 claude 一点都不丝滑,有同样的感受吗? opencode 消息周知插件 今天 claude opus 和前两天比,质的飞跃 - V2EX 999 包月价? - V2EX 一个版本, 50 项更新:我们几乎重做了整个播放页 本地大模型多大显存够用? GOGDNS 一款简易的私人 DNS 服务器 - V2EX API key (GLM) 怎么使用 claude code desktop ? Claude 这样订阅有问题吗 - V2EX 帮我爸找回了一篇赛博兰亭集序 求推荐稳定、高性价比使用 Claude Opus 4.6 的渠道/平台 搞个云端 claude code 防止 封号 - V2EX 用 Claude 要实名了,内地用户怎么办? OpenAI Plus 和 Team 都缩水了吗 海外 Android 手机有什么好用的国内第三方应用市场推荐吗 - V2EX 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 - V2EX claude 认证莫慌 北京互联网法院有什么攻略么?起诉北京智谱华章科技股份有限公司退款可行么? - V2EX Claude 开始引入身份验证 求 vscode 做笔记软件的插件推荐 - V2EX 讯飞星辰的 Coding Plan 如何? Anthropic 宣布在 Claude 平台推行身份验证机制 科普一下低价 gpt 是怎么来的 有没有长期关注 Claude 的朋友,我建了一个 Channel 自动抓取 Claude Team 的推文 啃了那篇 54 页的 Agent Harness 综述, 给大伙讲个省流版 现在那家的 coding plan 还能买到 是不是最近会有什么更聪明的大模型要发布了呀? 用多了 AI 后,有没有觉得 AI 生成的文章有很强的既视感? 如何 实践 Harness 工程? 今日份 GPT 5.4 笑话 如何建一个自己的号池,让 cursor 真正实现 token 自由 写了三个月 Agent Harness,我终于敢让 Claude Code 全自动写代码了 感叹一下 GLM 5.1 真的强
开发了一个进阶版 Apple 健康 - V2EX
MagicCoder · 2026-06-25 · via V2EX - 技术

前言

使用 iPhone + Apple Watch 组合有段时间了,当初买的时候,想着用它来记录我的跑步数据,但是坚持了没多久,我就懒惰了,手表最大的作用就成了睡眠监测工具了,由于作息一直比较规律(晚 11 ~早 7 ),就没怎么关注过这些。

最近半年时间,时不时的熬夜写开源项目,我开始关注自己的健康状况了,打开系统自带的的健康 app 把玩了一番,发现它的数据特别全,但是有几个不好用的地方:

  • 首页的内容比较分散,指标都是以列表的形式进行展示的
  • 指标层级较深,需要切来切去,很多指标我更希望将他们展示到一个大的分类里
  • 指标太单一,大多数时候我并不是只想看某个数据,而是把睡眠、恢复、心率、压力、活动放在一起看,给出更完整的身体状态视角。
  • Apple 只会在你静息心率过高的时候给你发出提醒,而我日常会更关心“最近状态怎么样?哪里变好了?哪里需要注意?”

IMG_4989

寻找替代品

Apple Watch 的销量这么好,肯定不止我一个人觉得自带的软件不好用的。经过一番查找后,找到了几个看着还不错的,把他们都下载下来体验了下,综合下来给我的感觉是:

  • 功能做的太多了,我一眼看过去有点恍惚,接下来我该点什么?
  • 界面做的太卡通了,我比较喜欢简约风格的东西,更贴近系统的设计风格

自己开发

体验了 5 款这类软件,始终没找到适合我的,那就只能花点时间开发一个了⚒️

产品设计

我给这个应用取名为 VirPulse ,它并不是想取代 Apple 健康,而是把 Apple 健康里已经记录好的数据重新整理一遍,让我能更快看懂自己的状态。

在设计产品时,我先给自己定了一个原则:不要把 Apple 健康里的所有数据重新抄一遍,也不要一打开软件就塞给用户几十个指标。

所以整个软件只保留了 3 个主要入口:

  • 首页:快速看懂今天的状态
  • 分析:把多个指标放在一起看
  • 搜索:直接找到某个具体指标

可能很多人会好奇,为什么这个应用叫VirPulse

我的上一个作品叫NginxPulse,它将 Nginx 访问日志转换成直观的图表,就像在查看 Nginx 的“生命体征”一样。

健康数据记录的是一个人每天的身体状态,而心跳又是生命最直接的信号,所以我还是想保留 Pulse 这个词。

一开始本来想叫 LifePulse ,但是 App Store 里已经有了同名应用。后来我继续从生命力、力量相关的词里寻找灵感,最终从拉丁语Virtus中取了前面的Vir,再和Pulse组合,于是就有了VirPulse这个名字。

首页

首页是我每天打开次数最多的地方,所以这里没有放太多复杂的图表,而是先给出一个今日状态评分,再展示睡眠、静息心率、HRV 、步数和活动消耗等信息。

这个评分不是简单取某一个指标,而是会结合睡眠恢复、身体恢复、活动完成度以及最近一段时间的变化趋势进行计算。

比如昨晚睡眠时间不够、HRV 下降、静息心率又比平时高,那么软件就会提醒我最近可能需要多休息,而不是只展示几个冷冰冰的数字。

IMG_4927

这里的评分主要用于观察个人趋势,不作为医疗诊断。

分析

分析页是这个软件的核心功能,我把健康数据分成了运动、睡眠、代谢和压力几个大的分类。

IMG_4928

每个分类都不是只看一个数据,例如睡眠分析会同时参考:

  • 睡眠时长和睡眠阶段
  • 入睡、起床时间是否规律
  • 夜间心率和 HRV
  • 血氧、呼吸频率和腕温

压力状态也不是手表直接提供的数据,而是结合睡眠变化、HRV 、静息心率、活动节律等数据进行估算。

image-20260622024136831

时间范围支持近 7 天、近 30 天、近 90 天和自定义日期,可以用来判断某个变化是偶尔出现,还是已经持续了一段时间。

如果某些数据缺失,软件不会简单按 0 分计算,而是只使用当前已有的数据,并提示这次分析的依据是否完整。

趋势和搜索

有时候我并不想看综合分析,只是想确认某个具体指标最近有没有变化,所以做了一个搜索入口。

IMG_4990

在这里可以直接搜索睡眠、心率、HRV 、血氧、体重、体脂、腕温等指标。点进去后,可以查看最近记录、平均值、最高值、变化趋势以及这个指标和其他健康状态之间的关系。

IMG_4991

IMG_5076

IMG_5077

首次连接 Apple 健康时,会先同步最近 90 天的数据,之后再在后台补全近 400 天的历史趋势。

小组件

为了减少打开软件的次数,我还做了多套桌面小组件,可以直接查看今日状态、睡眠评分、活动进度、压力状态和生命体征趋势。

同时也适配了待机显示,晚上给手机充电时,就可以把它当成一个简单的健康状态面板。

IMG_4933

界面风格

界面上没有加入太多卡通元素,整体以深色背景、半透明卡片和系统图标为主,不同颜色只用来区分睡眠、心率、活动等指标。

image-20260622024656545

页面切换、下拉刷新、图表拖动和底部 Tab 也尽量遵循 iOS 原生的交互方式,用起来不会有太强的学习成本。

IMG_4931

image-20260622024943489

数据隐私

健康数据比较敏感,所以 HealthKit 读取到的原始数据、趋势和分析结果都保存在设备本地,相关计算也是在本地完成的。

服务端主要用于 Apple 账号登录、用户资料和会员状态,不会上传每天的睡眠、心率、步数这些健康记录。

技术栈

这是一个原生 iOS 项目,最低支持 iOS 17 ,并针对 iOS 26 的新 Tab 和 Liquid Glass 系统进行了深度适配。

客户端全部使用 Apple 官方提供的框架,没有引入第三方 UI 和数据处理库,主要技术栈如下:

  • SwiftUI:负责整个软件的界面和交互
  • HealthKit:读取 Apple 健康中的睡眠、心率、HRV 、活动等数据
  • SwiftData:在本地保存健康数据、分析结果和趋势缓存
  • Swift Charts:绘制趋势图、睡眠阶段和指标详情图表
  • WidgetKit:实现桌面小组件和待机显示
  • StoreKit 2:处理月付、年付、永久买断、恢复购买和兑换代码
  • AuthenticationServices:实现通过 Apple 登录
  • URLSession + async/await:和后端接口进行通信
  • Keychain:保存登录令牌

首次授权时读取最近 90 天数据,后续按天增量同步,同时在后台分批补全近 400 天历史数据。这样既不会让第一次进入软件等待太久,也能保留足够长的趋势数据。

图表数据比较多时,如果直接在页面切换过程中读取和计算,会明显感觉到卡顿。所以详情页会先打开一个轻量页面,再异步准备数据,等页面切换完成后再挂载图表。

业务实现主流程:

3333

服务端是基于我现有的 Java 项目继续开发的,主要技术栈如下:

  • Spring Boot + Java:提供账号和会员相关接口
  • MyBatis + MySQL:保存用户资料、登录令牌和订阅记录
  • JWT:处理访问令牌和刷新令牌
  • App Store Server API:校验 Apple 交易和会员状态
  • App Store Server Notifications:接收续订、过期和退款等订阅变化

健康分析并不依赖服务端,服务端主要负责确认“这个用户是谁”和“这个用户是否拥有 Pro 会员”。即使网络暂时不可用,已经同步到本地的健康数据依然可以正常查看。

获取应用

VirPulse 现已在全球 App Store 上架,打开 App Store 搜索“VirPulse”即可下载。

IMG_4992

写在最后

至此,文章就分享完毕了。

我是神奇的程序员,一位前端开发工程师。

如果你对我感兴趣,请移步我的个人网站,进一步了解。