nativescript - NativeScript混合移动应用程序:跟踪/捕获崩溃

标签 nativescript angular2-nativescript crash nativescript-angular nativescript-plugin

我正在构建NativeScript移动应用程序,除其他目的外,我还出于分析目的而捕获该应用程序,我需要捕获“应用程序崩溃” ,可能带有崩溃的错误/原因。

我遇到了this SO post,但它的问题是如何不使应用程序崩溃。建议以下捕获崩溃事件:

var application = require("application");

application.on(application.uncaughtErrorEvent, function (args) {
    if (args.android) {
        // For Android applications, args.android is an NativeScriptError.
        console.log("NativeScriptError: " + args.android);
    } else if (args.ios) {
        // For iOS applications, args.ios is NativeScriptError.
        console.log("NativeScriptError: " + args.ios);
    }
});

如果我按以上所述去做,那么我有以下问题。如果有人可以确认这是否意味着应用程序每次崩溃都将生成此application.uncaughtErrorEvent事件,将不胜感激?我可以依靠吗?
如果是真的,那么也许我可以对后端进行REST调用并存储日期,时间以及args.androidargs.ios中的任何内容。

如果以上方法不正确,那么有人可以帮我怎么做吗?

非常感谢您的帮助。谢谢!

最佳答案

崩溃期间application.onUncaughtError可能会被命中95-98%的时间;这是非常可靠的。我已经看到该应用程序崩溃,而没有任何通知,它简直是令人毛骨悚然,但是我不确定任何报告系统都能处理该崩溃。

我这样做的方法是在应用程序启动期间注册了几件事:

  • 我创建一个global.error函数;它用于需要发送错误以进行远程记录的任何内容(例如try / catch,promise / catch)。因此,在我的代码库中的任何地方,我都可以做一个global.error(theError);,它将被处理;这样,当发生错误时,我不必担心尝试加载或需要东西,因为这可能会导致其他错误。
  • 我使用onUncaughtError事件捕获通常无法捕获的任何内容,然后通知用户发生了错误并退出了应用程序。 (在这种情况下,不建议尝试恢复,因为您不知道错误是从哪里抛出的。。。)
  • 如果我使用工作线程,则当我启动工作线程时,我会注册worker.onerror以将其数据转发到主线程global.error函数,并且我从global.error的工作版本中收到一条特定消息,该错误会将错误发送回主线程。这样,如果工作程序本身调用global.error,则该消息将被传递回主线程,然后传递到主线程上的global.error,后者可以正确处理所有事务。

  • 这种技术使我能够捕获几乎所有可能发生的错误。主要global.error函数和onUncaughtError都使用我构建的简单报告库,如果设备处于在线状态,该报告库会将所有数据报告回我的一台服务器。如果设备处于脱机状态,则可以选择将数据保存到报告文件中,以便以后上传;或忽略它。

    它还具有安全性检查,以验证错误不是网络错误(我们不希望错误报告进入循环,即,尝试报告错误会导致错误,然后尝试报告错误;因此请参见如果这是某种类型的网络错误;它将忽略这些错误。)

    关于nativescript - NativeScript混合移动应用程序:跟踪/捕获崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240445/

    相关文章:

    angular - 如何在angular2 nativescript中按顺序从 ListView 行项中获取所有开关控件值

    nativescript - 在没有 Angular 的 NativeScript 中是否有类似的 "ngIf"指令?

    android-studio - Android 工作室崩溃

    java - 当程序错误退出时如何在终端中重新启动程序?

    css - 无法解析 CSS

    css - 无法导入/使用 Nativescript 核心深色主题

    nativescript-toast 未在 iOS 上显示

    vba - Excel 2016 锁定了在早期版本的 Excel 中工作的 VBA 函数

    Nativescript - 如何使用 http.request 发布图像

    android - TextField 模糊在 Nativescript vue 中不起作用