nativeScript-bugsnag
by farfromrefuge | v1.0.15
npm i --save nativeScript-bugsnag

npm npm GitHub forks GitHub stars

安装

  • tns plugin add nativeScript-bugsnag

确保在添加插件后运行新的构建,以避免任何问题。

使用方法

import { Client } from 'nativescript-bugsnag';
const bugsnag = new Client();
bugsnag
.init('YOUR_API_KEY')
.then(res => {
bugsnag.enableConsoleBreadcrumbs();
bugsnag.handleUncaughtErrors();
console.log('bugsnag did init', !!res);
})
.catch(err => {
console.log('bugsnag init failed', err);
});

报告 NativeScript 错误

handleUncaughtErrors 方法确保所有未捕获的 NativeScript 错误在生产环境中被 Bugsnag 捕获,使用一个 自定义错误处理器

报告已处理错误

如果您想将一个已处理错误发送到 Bugsnag,可以将任何 Error 对象传递给 Bugsnag 的 notify 方法

try {
// potentially crashy code
} catch (error) {
bugsnag.notify(error);
}

报告 promise 拒绝

要报告一个 promise 拒绝,请在 catch 块中使用 notify()

new Promise(function(resolve, reject) {
/* potentially failing code */
})
.then(function () { /* if the promise is resolved */ })
.catch(function (error) {
bugsnag.notify(error); /* if the promise is rejected */
});

发送诊断数据

自动捕获的诊断

Bugsnag 会自动捕获并附加以下诊断数据

  • 完整的堆栈跟踪
  • 电池状态
  • 设备型号和操作系统版本
  • 所有线程的线程状态
  • 发布阶段(生产、调试等)
  • 应用在前台和/或后台运行的时间
  • 设备和供应商特定的标识符

附加自定义诊断

通常,将特定于应用的诊断数据附加到异常报告中很有帮助。这可以通过向 notify 添加一个报告回调来实现。该回调在报告发送到 Bugsnag 之前被调用

bugsnag.notify(error, function(report) {
report.metadata = { "account": {
"company": "Acme Co",
"id": 123
}
}
});

识别用户

为了关联错误与客户报告,或查看经历过每个错误的用户列表,捕获并显示用户信息很有帮助。在 Bugsnag 客户端设置的任何信息都会随每个错误报告发送

bugsnag.setUser('1234', 'Jessica Jones', '[email protected]');

记录碎面包屑

为了了解在每次崩溃之前应用程序中发生的事情,留下简短的日志语句(我们称之为碎面包屑)可能很有帮助。最后几个碎面包屑会附加到崩溃中,以帮助诊断导致错误的事件。

自动捕获的碎面包屑

默认情况下,Bugsnag 会捕获常见事件,包括

  • 低内存警告
  • 设备旋转(如果适用)
  • 菜单显示
  • 屏幕截图捕获(不是屏幕截图本身)
  • 撤销和重做
  • 表视图选择
  • 窗口可见性更改
  • 非致命错误
  • 日志消息(默认关闭,请参阅配置选项)

附加自定义碎面包屑

要附加额外的碎面包屑,请使用 leaveBreadcrumb 函数

bugsnag.leaveBreadcrumb('load main view', {type: 'navigation'});

会话跟踪

Bugsnag 跟踪应用程序内发生的“会话”数量。这允许您比较发布之间的稳定性得分,并帮助您了解发布质量。

会话默认会捕获和报告。此行为可以通过使用 autoCaptureSessions 配置选项来禁用。

使用此选项,Bugsnag 每次都会报告一个会话

  • 应用程序启动
  • 应用程序在 60 秒内首次进入前台

如果您想控制被视为会话的内容,可以关闭自动会话跟踪的 autoCaptureSessions 选项,并使用 startSession()stopSession()resumeSession() 管理会话生命周期。