Skip to content

v1.5.60

Latest

Choose a tag to compare

@fnthinklevi fnthinklevi released this 23 Aug 10:45
· 1 commit to main since this release

v1.5.60 - 2026-08-23

修复:推送历史偶发一直显示「推送中」 + 精确闹钟权限兼容

🐛 推送历史状态修复

  • 根因:送达结果链路依赖 MainActivity 存活(动态广播接收器 + 其持有的 MethodChannel)。滑掉最近任务或系统回收 Activity 后,推送完成的结果广播无人接收,记录永远停在「发送中」。
  • 修复:送达结果持久化队列(DeliveryResultStore)+ 启动 / 回前台时补偿拉取(drainDeliveryResults)。广播实时链路不变,Activity 销毁期间的结果由队列兜底,下次加载记录或回前台时一次性补齐,覆盖 Webhook / 邮件 / 短信 / 电话全部通道。

🐛 精确闹钟权限 Intent 兼容

  • Android 12~13 的 ACTION_REQUEST_SCHEDULE_EXACT_ALARM 去除可选的 data 参数(官方标记 Optional)。部分 ROM(尤其国产)Settings 组件不匹配带 data 的 Intent,导致授权弹窗无法打开;不带 data 时系统默认取调用者包名,并保留 Activity 未找到时的应用详情页兜底。

精确闹钟开关 + 国产 ROM 保活引导 + 邮件通道增强 + 安全与健壮性加固

精确闹钟开关(B1)

  • 新增可选「精确闹钟」开关(默认关闭,保持权限最小化):开启后延迟/定时推送在深度 Doze 下也可准点触发(setExactAndAllowWhileIdle)。
  • Android 12~13 开启时自动弹系统授权对话框;Android 14+ 跳应用详情页引导手动授权。
  • 未授权时自动降级为非精确闹钟,功能不中断,不阻塞使用。

🔋 国产 ROM 保活引导卡片(B2)

  • 权限设置页新增保活引导:省电无限制 / 自启动 / 任务锁定 / 通知使用权四步卡片,识别 MIUI/HyperOS/ColorOS/EMUI 等 ROM 一键跳转对应厂商省电设置页。

📱 锁屏验证码兜底(B3)

  • 锁屏脱敏正文(验证码显示 ******)检测后,转发文案替换为「验证码内容被锁屏隐藏,请解锁后查看」,不再向各通道发送无意义星号。

📧 邮件通道增强(D1)

  • 临时性失败(网络超时 / 连接失败 / SSL 握手 / 421 临时故障)自动重试 1 次(2 秒退避)。
  • 错误分类细化:认证失败 / 地址错误 / 被拒收等配置类问题直接提示,失败原因经历史记录内联显示(与测试邮件共用同一分类逻辑)。

⬇️ 检查更新 403 优化(A1)

  • 更新检查被 CDN(Cloudflare Bot Fight Mode)拦截时自动指数退避重试 1 次;仍失败则提示「被 CDN 拦截,请稍后重试」而非笼统网络错误。

🔒 安全与健壮性加固

  • 正则规则保护(E1):规则/关键词正则超过 200 字符直接拒绝,防止灾难性回溯阻塞监听服务。
  • 竞态与异常加固(E2):推送计数跨日重置同步化、通道配置 volatile 发布(copy-on-write)、协程未捕获异常兜底记录日志。
  • 证书固定框架就绪(C1):证书 pin 支持构建时注入(--dart-define=CERT_PINS),默认关闭,开启后 Release 版强制校验服务器证书。
  • 原生配置加密桥接(C2):Webhook secret 等原生端明文存储迁移至 EncryptedSharedPreferences,与 Flutter 端加密存储同源。

🧪 测试补充(E3)

  • 新增跨零点时间区间命中/未命中、超长正则拒绝、边界长度正则可用等 4 个用例,测试总数 123。

Full Changelog: 1.5.59...1.5.60