续命打卡 App · 未打卡完整流程说明书

版本 V1.1 · 适用系统:Android App / 微信小程序 + PHP 后台 + 阿里云短信/语音 · 阅读对象:运营、客服、测试、家属联系人

版本更新记录

V1.1(2026-10-02)守护与火花

V1.0(2026-10-01)首个正式版

一、倒计时在哪里?关闭 App / 小程序后还运行吗?

一句话结论:倒计时的权威计时在服务器上,App 和小程序只是「显示器 + 操作入口」。用户关闭 App、关闭小程序、手机关机、甚至卸载 App,倒计时都一秒不停地正常运行,超时后宽限通知和碎片分发照样执行——这正是「死人开关」类产品的核心设计:判定必须发生在机主无法干预的地方。

权威计时在服务器

客户端(App / 小程序)里的倒计时只是「显示器 + 本地闹钟」

客户端功能实现方式关闭 App / 小程序后
主界面实时倒计时每秒刷新,显示的是服务器下发的 deadline停止显示(无所谓,只是界面)
截止前的本地提醒通知App 用系统闹钟(AlarmManager)注册,不依赖 App 进程✅ 仍会弹出提醒
重启手机后恢复提醒App 的开机广播接收器(BootReceiver)自动重设闹钟✅ 重启后自动恢复
宽限期短信 + 语音电话 + 一键打卡链接全部由服务器经阿里云/运营商发起✅ 与客户端无关,永远有效
超时判定、进入宽限、触发分发全部由服务器 cron 巡检推进✅ 与客户端无关,永远有效
常见误解澄清:「我把 App 关了/把小程序删了,是不是就不会触发了?」——恰恰相反。关闭客户端只会让你收不到「主动提醒」,但服务器的倒计时照样走,超时后短信和电话依然会打给你;如果你是因为关机、停机、失联而没打卡,宽限期结束后碎片照样分发给联系人。想合法地暂停计时,唯一方式是主动使用「暂停监控」功能(状态 PAUSED)。

二、整体状态机(账号的 4 种状态)

状态标识含义
ACTIVE监控中绿色正常计时。用户在 App 设置了「打卡间隔」(如 24 小时),每次打卡后重新倒计时。
GRACE宽限期黄色已超过打卡截止时间,但还未到宽限截止。系统通过短信 + 电话 + App 通知三通道通知机主「立即确认存活」。
TRIGGERED已触发红色宽限期也结束仍无任何打卡。判定机主失联/出事,不可撤回,立即把加密秘密的碎片分发给各位紧急联系人。
PAUSED已暂停蓝色用户主动暂停监控(出差、住院等场景),不计时、不通知。

二、未打卡后的完整时间轴

示例:打卡间隔 24 小时、宽限期 12 小时。T0 = 上一次打卡时间。

T0 —— T0+24h
ACTIVE正常倒计时
App 主界面显示实时倒计时「距下次打卡还剩 xx:xx:xx」。临近截止时 App 会弹出本地通知提醒主动打卡。用户点击「打卡」按钮即回到 T0,一切重新开始。
T0+24h(超过打卡截止时间)
进入 GRACE 宽限期三通道同时通知机主
服务器定时任务(cron.php)巡检发现超时,立即:
  1. 把账号状态改为 GRACE,写入事件日志 ENTER_GRACE;
  2. 生成一个一次性被动打卡令牌(256 位随机数,仅在本次宽限期内有效);
  3. 同时通过 ① 短信 ② 语音电话 ③ App 推送 三种方式呼叫机主本人。
T0+24h —— T0+36h(宽限期内)
等待机主「被动打卡」
机主通过任一渠道确认,账号立即恢复 ACTIVE 并重新倒计时,事件日志记录 PASSIVE_CHECKIN(渠道)。三个渠道只需成功一个,其余渠道的链接/令牌同步失效。
T0+36h(宽限期也结束,仍无打卡)
TRIGGERED 触发分发不可撤回
系统判定机主失联,进入触发流程:
  1. 状态改为 TRIGGERED,记录触发时间,写事件日志 TRIGGERED;
  2. 给每一位紧急联系人发送:一条含「专属碎片」的短信 + 一通语音电话(读出其碎片编号);
  3. 给机主本人发最后一条告知短信「分发已执行」;
  4. 所有消息先落库 messages 表,发送失败自动重试,最多 10 次;
  5. 触发后 App 端「打卡」按钮锁死变红,提示「已触发分发,不可撤回」。
触发后任意时间
RECOVER联系人拼合碎片还原秘密
联系人打开恢复页 /r.php,多人凑齐门限数量(如 3 人中 2 人)的碎片后,网页还原出机主预先存放的加密内容(遗言、账号密码、嘱托等)。

四、宽限期三通道通知 · 具体内容

渠道 ① 提醒短信(发给机主本人)

【续命打卡】短信 · 发给机主 138****8888
【续命打卡】您已超过打卡时间! 原打卡截止:2026-09-28 08:00(北京时间) 宽限截止:2026-09-28 20:00(北京时间) 逾期未完成打卡,系统将把您保管的秘密分发给 3 位紧急联系人,不可撤回。 👉 点击链接一键确认存活(无需打开 App): http://你的域名/checkin.php?t=a1b2c3…(一次性链接)

渠道 ② 语音电话(阿里云智能语音外呼,发给机主本人)

来电显示:平台语音真实号(如 0571-XXXXXXXX)
接通后语音播报(放音文件):
「续命打卡紧急提醒:您已超过打卡时间。确认您仍然安全,请在手机上按 1 键,按 1 后自动完成打卡。如需查看详情,请打开续命打卡 App。」
机主操作:
  • 按 1 → 播放确认音 → 平台回执服务器 → 核销令牌 → 打卡成功 → 自动挂机;
  • 按其他键 → 静默,10 秒超时后自动挂机;
  • 什么都不按 → 10 秒超时自动挂机。

渠道 ③ App 推送通知(通知栏一键打卡)

⏰
⚠️ 宽限期提醒 · 请立即确认存活
已超过打卡时间,宽限截止 09-28 20:00,逾期将向 3 位联系人分发秘密且不可撤回。
立即打卡(中止分发)

五、触发后 · 紧急联系人收到的内容

联系人短信(每位联系人的碎片内容不同)

【续命打卡】短信 · 发给联系人甲 139****1111
【续命打卡】紧急通知 您的好友 张三(手机尾号 8888)已连续失联超过设定时限,其生前托付的秘密现已进入分发流程。 您是第 1 位保管人,您的专属恢复碎片为: LIFECHECK-SHARD-V1 1 9f3c2a…(一串编码) 请妥善保管本碎片。集齐 2/3 块碎片后,打开恢复页还原秘密: http://你的域名/r.php
同时还会接到一通语音电话,播报名义大意:
「续命打卡紧急通知:您的联系人张三已触发秘密分发,您是第 1 位碎片保管人,碎片编码已通过短信发送,请查收并妥善保管。」

碎片还原(Shamir 门限秘密共享)

六、边界情况与常见问题

情况系统行为
宽限期内机主才看到短信,点链接✅ 链接仍有效(未过宽限截止、未使用),点确认即打卡成功。
同一个短信链接点第二次❌ 提示「该链接已使用过」。令牌一次性核销,防重放。
电话里按了 2、3 等其它键不算打卡,平台静默忽略,10 秒超时后自动挂机。后台「短信/语音记录」页的通话状态会显示「已接听·按8」。
三个渠道都通知了,会先打卡哪个?以最先到达的为准。其余渠道的令牌立即失效(同一令牌三渠道共用)。
手机没电 / 没网 / 停机短信与语音由运营商触达,无需手机有网;App 推送需网络。消息发送失败自动重试最多 10 次,后台「消息记录」页可查看每条的发送状态与失败原因。
触发后还能不能撤回?不能。这是产品的核心安全设计:触发即代表机主可能已无法操作手机,任何撤回入口都可能被他人利用。App 内触发前所有「测试触发」都需二次确认。
触发后机主又出现了账号保持 TRIGGERED 状态,需要联系管理员在后台核实情况后人工处理;已发出的碎片建议通知联系人作废。
宽限期短信/电话没收到在后台「消息记录」页查看该条消息的投递状态与运营商回执错误码(如签名未报备、模板未审核、号码黑名单等)。
想暂停监控(住院手术、坐飞机等)App 内「暂停监控」,状态变 PAUSED,期间不计时;回来后「恢复监控」重新倒计时。

七、多端支持:App / 微信小程序 / 网页均可打卡

核心结论:倒计时的权威计时在服务器(数据库 deadline 字段 + 每分钟巡检的 cron.php),App 只是客户端之一。用户在微信小程序里打卡、设置参数,与在 App 里操作完全等效,整个未打卡流程照常运行。
核心能力实现位置小程序可用
倒计时判定、超时进入宽限、触发分发服务器 cron.php + sweep.php 定时巡检✅ 与客户端无关
注册 / 登录 / 改密码(短信验证码)服务器 api.php(HTTP JSON + JWT)✅ 小程序 wx.request 直接调
打卡 / 暂停 / 恢复 / 设置间隔与联系人服务器 api.php 同一批接口✅ 完全等效
宽限期提醒短信 + 语音电话(按 1 打卡)服务器经阿里云发起,运营商触达✅ 不受影响
碎片分发短信 / 语音、r.php 还原页服务器 + 浏览器网页✅ 不受影响
通知栏「一键打卡」按钮Android 系统通知(App 专属能力)❌ 小程序无此通道

小程序端的差异与弥补

小程序上线的硬性前提

架构优势:由于后端是纯 HTTP API + 服务器端权威计时,未来增加 iOS App、网页版、甚至电话语音-only 用户(全程只用短信链接和电话按键)都不需要改动后端,只需新增前端壳。

八、守护与火花(V1.1 新增)

「死人开关」管的是极端失联场景,「守护与火花」管的是日常牵挂:让家人/好友每天都能感知到「TA 今天平安」。

核心玩法:互守点亮火花,火花养成守护树

火花等级

连续互守天数等级标识名称
当天完成互守✨初燃之火
连续 7 天🔥连续之焰
连续 30 天💎永恒守护
连续 100 天🏆传家之宝

分享三件套

分享卡类型触发时机
邀请卡随时可分享,带 72 小时有效邀请码,好友接受即建立守护关系
平安卡有机主打卡后可分享,展示「我今日已平安」+ 守护树当前状态
果实成就卡历史最高连续互守 ≥30 天解锁,可分享「永恒守护」成就
设计原则(硬约束):不使用微信订阅消息(提醒全走站内:首页横幅 + 红点 + 页内提示);守护入口不进 tabBar(放「我的」页 + 首页卡片);文案禁止「不分享就受限」式诱导措辞;火花断签只停长不枯死。

九、管理员在后台能看到什么

隐私承诺:用户存放的秘密全程 AES-256-GCM 加密,密钥经 Shamir 分片,服务器与管理员均无法查看明文;只有凑齐门限碎片的联系人才能在恢复页还原。

—— 续命打卡 · 让重要的托付永不丢失 ——