recordEvent method
记录打点事件
Implementation
Future<void> recordEvent({
required String sessionId,
required String eventCode,
required String eventName,
required EventType eventType,
required int timestamp,
String? belongPage,
Map<String, dynamic>? extra,
required Function() onSuccess,
required Function() onError,
}) async {
if (_api.isEmpty) {
return;
}
// 获取位置信息
final loaction = await IpLocation.getIpLocation();
// 将 extra 转为 JSON 字符串
final extraContent = extra == null ? null : jsonEncode(extra);
// 是否测试环境
bool isTest = !kReleaseMode;
if (_apiParameterNameModel == null) {
return;
}
var parameters = {
_apiParameterNameModel!.sessionId: sessionId,
_apiParameterNameModel!.uuid: _userid,
_apiParameterNameModel!.eventCode: eventCode,
_apiParameterNameModel!.eventName: eventName,
_apiParameterNameModel!.eventType: eventType.typeCode,
_apiParameterNameModel!.eventTime: timestamp,
_apiParameterNameModel!.userIp: loaction?.ip ?? "",
_apiParameterNameModel!.countryCode: loaction?.country ?? "",
_apiParameterNameModel!.cityCode: loaction?.city ?? "",
_apiParameterNameModel!.systemVersion: _systemVersion,
_apiParameterNameModel!.appVersion: _appVersion,
_apiParameterNameModel!.attrPage: belongPage ?? "",
_apiParameterNameModel!.eventContent: extraContent,
_apiParameterNameModel!.env: isTest ? "dev" : "prd",
};
try {
var response = await NetRequest.shared.postJson(
_api,
parameters: parameters,
isShowLoading: false,
);
if (response?["code"] != 0) {
onError();
} else {
onSuccess();
if (kDebugMode) {
print(
"打点成功: $eventName, eventCode: $eventCode, belongPage: $belongPage, extra: $extra, type: $eventType",
);
}
}
} catch (e) {
onError();
return;
}
}