addEvent method
void
addEvent({})
打点
Implementation
void addEvent({
required String code,
required String name,
required EventType type,
int? timestamp,
required String? belongPage,
Map<String, String>? extra,
}) {
var newTimestamp = timestamp ?? DateTime.now().millisecondsSinceEpoch;
if (type == EventType.pageIn) {
// 退出上一个页面
if (currentPageCode.isNotEmpty) {
addEvent(
code: currentPageCode,
name: _currentPageName,
type: EventType.pageOut,
timestamp: newTimestamp - 1,
belongPage: currentPageCode,
);
}
// 记录新页面
currentPageCode = code;
_currentPageName = name;
_currentPageExtra = extra;
}
// Firebase打点
FirebaseAnalyticTool.addEvent(name: "${code}_${type.firebaseTypeCode}");
// 接口记录
recordEvent(
sessionId: _sessionId,
eventCode: code,
eventName: type.eventNamePrefix.replaceAll("@name", name),
eventType: type,
timestamp: newTimestamp,
belongPage: belongPage,
extra: extra,
onSuccess: () {},
onError: () {
// 记录失败的事件
var model = AnalyticModel(
sessionId: _sessionId,
eventCode: code,
eventName: name,
eventType: type,
timestamp: newTimestamp,
belongPage: belongPage,
extra: extra,
);
var data = jsonEncode(model);
var errorModel = AnalyticErrorModel(data: data);
AnalyticErrorDb.getInstance().then((db) => db.insert(row: errorModel));
},
);
}