更新记录

1.0.0(2026-09-10) 下载此版本

Sensors Wave iOS 崩溃捕获+触发通道 插件

Changelog

Sensors Wave iOS 崩溃捕获+触发通道(sensorswave-uniappx 配套插件)的所有显著变更均记录于此文件。 格式参考 Keep a Changelog, 版本号遵循 Semantic Versioning,与主插件同步发版。

[1.0.0] - 2026-09-10

新增

  • 首个版本:iOS fatal 触发通道(triggerIosTestCrash 真机真实 NSException 派发,SwTriggerHybrid 混编实现)。
  • 捕获链迁入本插件:SwTriggerHookProxy 启动安装 NSSetUncaughtExceptionHandler(+5s/+20s 复核夺回)+ 崩溃线程 Foundation 文件落盘(Library/sw_crash_records/,容量 10 条 / TTL 7 天)。
  • 原生读取面 pullPendingCrashRecords / ackPendingCrashRecords:主插件补发侧合并文件记录、写成功才 ack,记录不丢不重。
  • 模拟器验证通道 simulateIosTestCrash:Rosetta 基座下直调同一 C handler,全链(落盘→重启补发)可先模拟器验证再上真机。
  • 触发派发改异步(DispatchQueue.global().asyncAfter +0.5s),对齐姊妹插件实测模式。

平台兼容性

uni-app x(4.0)

Chrome Safari Android iOS 鸿蒙 微信小程序

其他

多语言 暗黑模式 宽屏模式

Sensors Wave iOS 崩溃捕获+触发通道(sensorswave-uniappx 配套插件)

sensorswave-uniappx 数据采集 SDK 的 iOS 端 fatal 崩溃捕获原生面。业务工程无需直接安装或调用本插件——在 HBuilderX 中导入主插件时, 本插件作为其 uni_modules.dependencies 依赖自动跟随安装。

为什么存在这个插件

iOS 端 fatal 崩溃(NSException)的捕获必须在原生层完成:NSSetUncaughtExceptionHandler 安装、崩溃线程上同步落盘,JS 世界(uts2js)无法触及。而 uni-app x 编译器的路由规则是 「app-js 目录的插件,原生实现永不编译进基座/正式包」——主插件必须保留 app-js (鸿蒙生产入口 + iOS 标准基座可用性),因此这段原生代码只能以独立插件(仅 utssdk/app-ios、 无 app-js、无根入口)形态存在,才能被编译为原生 framework 打进自定义基座与正式包。

功能

捕获(生产链路,自动生效)

  • SwTriggerHookProxyapplicationDidFinishLaunching 安装 NSSetUncaughtExceptionHandler (混编 SwCaptureHybrid 完成 C 函数指针注册,+5s/+20s 复核夺回,防引擎初始化窗口被抢注);
  • NSException 未捕获时,在崩溃线程内以 Foundation 同步落盘一条崩溃记录到 <Home>/Library/sw_crash_records/<13位毫秒>_<id>.json(进程将死,只做最小同步写);
  • 记录契约与主插件 CrashRecord 对齐: {"id":"<ack 键>","type":"<异常类名>","message":"..","stack":"<callStackSymbols>","time":<13位毫秒>}
  • 记录容量上限 10 条、有效期 7 天,超限淘汰最旧、超期自动清理。

补发(由主插件驱动)

下次启动主插件经原生代理调用 pullPendingCrashRecords() 拉取记录、合并进其补发存储并上报, 成功后 ackPendingCrashRecords(ids) 删除已补发文件。本插件不主动上报。

触发(demo 验证通道,请勿在生产调用)

  • triggerIosTestCrash(name, reason):真机真实 NSException 派发(异步 +0.5s 脱离桥调用栈);
  • simulateIosTestCrash(name, reason):模拟器 Rosetta 基座可用(真实 raise 机制损坏), 直调注册给运行时的同一 C handler,完整走「落盘 → 链式 → abort」。

平台支持

App-iOS(自定义基座 / 正式包)。无 JS 实现(app-js 缺失是 uts 原生代理路由与基座收录的 前提。 Android / 鸿蒙的崩溃采集在主插件内实现,不经本插件。

版本

与主插件 sensorswave-uniappx 同步发版,见 changelog.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。