flutter - 如何通过哨兵发送设备信息

anu*_*der 3 error-handling try-catch sentry dart flutter

我正在寻找例如如何捕获自定义键值,例如Device-ModelAndroid Version以及方法等到 sentry.io。但目前没有找到。

例如下面的代码:

 Future doWatchVideo(BuildContext context) async {

    RewardedVideoAd.instance.show().catchError((error, stackTrace) {

        sentry.capture(
            event: null,
            stackFrameFilter: null,

        )
        sentry.captureException(
          exception: error,
          stackTrace: stackTrace,
        );
    });
  }
Run Code Online (Sandbox Code Playgroud)

报告了错误和堆栈跟踪,但我不知道如何发送用户的设备信息,也不知道这个错误是在什么类和方法中触发的。

任何的想法 ?

谢谢你

Rao*_*che 8

您需要使用extra事件类中的参数

final Event event = Event(
        loggerName: '',
        exception: error,
        stackTrace: stackTrace,
        release: '${info.version}_${info.buildNumber}',
        environment: 'qa',
        tags: tags,
        extra: extra,
    );
Run Code Online (Sandbox Code Playgroud)

当然,您必须使用device_info插件来获取有关设备的信息:

final PackageInfo info = await PackageInfo.fromPlatform();

Map<String, dynamic> extra = {};
if (defaultTargetPlatform == TargetPlatform.android) {
    extra['device_info'] = await DeviceInfoPlugin.channel.invokeMethod('getAndroidDeviceInfo');
}
else if (defaultTargetPlatform == TargetPlatform.iOS) {
    extra['device_info'] = await DeviceInfoPlugin.channel.invokeMethod('getIosDeviceInfo');
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请考虑阅读Simon Lightfoot 的完整示例