TernDays v0.6.1
缺陷修复版本——来自一次 90 个审查代理的全面体检(76 条经对抗验证的发现),本版集中修掉其中的高危与数据正确性问题。
高危修复
- Android 14+ 定位权限被收回后每天两次后台崩溃:闹钟触发的前台服务会因系统限制直接抛异常,且用户毫无感知。现在会前置检查并发提醒通知,绝不崩溃
- 历史重解析会"打脸"交叉验证(双端):城市库升级/迁移导入后的重解析此前用裸最近邻,会把此前依据行程连续性正确改判的边界记录批量改回错城市。现在改为按时间重放——每条历史记录都走与实时打卡完全相同的交叉验证
- iOS 打卡回调竞态:后台刷新与开屏打卡同时发生时回调被覆盖,后台任务永远以失败收场、系统持续降低后台配额。改为主线程回调队列 + 代次标记,并发安全
- 环核心城市卫星城整片误判(城市库 v3):燕郊/三河/大厂/香河→此前判北京(实属廊坊)、昆山花桥→判上海(实属苏州)、佛山南海黄岐/大沥/里水→判广州(实属佛山)。逐点补锚修正,覆盖安装后历史记录自动重解析改回
数据与算法
- 粘滞链不再无限自续期:被行程连续性"粘住"的打卡不再作为下一次的参照锚点,36 小时上限真正约束整条链;参照锚点还会尊重你手动更正过的城市
- 城市库 v3 一并修正:8 组重名 key 把两座不同城市并成一行(如日本士别/标津)、新加坡被拆成 7 个"城市"(现整体记一城)、旧金山显示"三藩"、25 个城市显示日文名、泽西城被并进纽约、莫斯科重复行
- 城市搜索支持拼音(beijing/shenzhen 可搜),结果按 全等 > 前缀 > 包含 排序、中国城市优先,重名城市带国家标注(加拿大伦敦 vs 英国伦敦)
- 城市库单行损坏只跳过该行,不再让整库加载失败
- iOS 数据文件解码失败时改名保留原件,绝不再静默清空全部历史
体验修复
- 后台补打/重解析/迁移导入完成后,打开着的页面即时刷新(此前 Toast 说修正了 N 条、页面还是旧数据)
- 「无记录」天数从首条记录之日起算:新装用户不再一上来就看到"另有 240+ 天无记录"
- 手动更正过的日子:标签改为「手动」,并保留显示当天真实打卡明细;更正走最后一天后城市详情页自动返回,不再停在空页
- 引导页权限被永久拒绝后,按钮变为「去系统设置开启」并附路径说明(Android 与 iOS「始终允许」一步同理),不再是点了没反应的死按钮
- Android 12+「闹钟和提醒」权限恢复后自动重排打卡闹钟;OEM 强制反色已禁用;导出页年份可横向滚动、旋转屏幕不再卡在「正在生成…」;通知有声音(iOS)
覆盖安装即可,数据与小组件保留;首次打开会自动按新城市库修正历史记录并提示条数。