tencent cloud

自定义事件处理

PDF
聚焦模式
字号
最后更新时间: 2026-04-07 14:47:09

事件上报

Superapp 可以实现事件上报接口,来覆盖 tcmpp_flutter 内部的上报逻辑。
Future<bool> reportEvent(int eventId, String eventName, AppInfo appInfo,
Map<Object?, Object?> params) async {
return false;
}
示例代码:
@override
Future<bool> reportEvent(int eventId, String eventName, AppInfo appInfo,
Map<Object?, Object?> params) async {
print("reportEvent:$eventName appinfo:$appInfo params:$params");
// TODO: implement reportEvent
return true;
}

配置事件处理

说明

自定义以下事件处理,需实现 TcmppFlutterEventChannel 类中方法并结合 EventConfig 注解来实现事件内容监听以及 SDK 内部逻辑定制。

注册事件监听

/// Register SDK for message callback event monitoring, which can be marked
/// based on EventConfig annotation to indicate whether to intercept events,
/// such as log events, etc
void registerMessageEventHandler(TcmppFlutterEventChannel handler);
使用示例:
_tcmppFlutterPlugin.registerMessageEventHandler(TcmppFlutterEventChannelImpl());

生成配置文件

注意:
需要集成 tcmpp_flutter_builder 插件来完成以下代码生成的能力!
为自定义事件处理逻辑,如取消 SDK 内部日志上报、基础库更新等,需在实现方法上加上 EventConfig 注解,并传入 value 值( true 或 false )。
示例:
使用 EventConfig 注解标记方法,value 值为 true 实现 SDK 内部不再上报内部日志。
@EventConfig(value: true)
@override
Future<void> uploadUserLog(String appId, String logPath) async {
print("SupperAppCustom uploadUserLog:${logPath}");
}
项目配置:
在项目 pubspec.yaml 文件 dev_dependencies 项中添加 build_runner 插件,以实现配置文件生成。
在项目 pubspec.yaml 文件 flutter-assets 项中添加生成的配置文件路径,编译 Native 中进行使用。
...
dev_dependencies:
build_runner: ^2.4.6
flutter:
assets:
- lib/generated/tcmpp_event_config.json
命令生成配置文件:
在项目路径终端中执行以下命令生成 tcmpp_event_config 配置文件。
flutter pub run build_runner build --delete-conflicting-outputs
文件示例:
{
"isUpdateBaseLib": true,
"uploadUserLog": true,
"reportRealTimeLog": false
}

实时日志上报

Superapp 可以通过实现 TcmppFlutterEventChannel 的 reportRealTimeLog 方法定制小程序实时事件日志上报逻辑(包括小程序内部调用 wx.getRealtimeLogManager 写入的日志数据)。
说明:
需结合 EventConfig 注解,来定义 SDK 内部是否上报,为 true 时 SDK 内部不再上报。如只需监听日志回调可不加上注解,只实现方法。
API 如下:
/**
* 实时日志回调
* @param RealTimeLogInfo 日志信息
*/
Future<void> reportRealTimeLog(RealTimeLogInfo? logInfo) async {}
RealTimeLogInfo
class RealTimeLogInfo {
/// 当前页面
String page;
/// 基础库版本
String jsLibVersion;
/// 小程序Id
String appId;
/// 过滤关键字
List<String> filterMsgs;
/// 日志内容
List<LogItem> logs;
}

class LogItem {
/// 日志时间
int time;
/// 日志等级
int level;
/// 日志信息
String msg;
/// 日志TAG标记
String tag;
/// 日志关键字
String key;
}
使用示例:
@EventConfig(value: true)
@override
Future<void> reportRealTimeLog(RealTimeLogInfo? logInfo) async {
print("SupperAppCustom reportRealTimeLog:${logInfo}");
}

内部日志上报

Superapp 可以通过实现 TcmppFlutterEventChannel 的 uploadUserLog 方法定制内部日志上报逻辑,包括小程序内部调用 wx.getLogManager 写入的日志数据,用户可以通过使用 button 组件的 open-type="feedback" 来上传打印的日志。
说明:
需结合 EventConfig 注解,来定义 SDK 内部是否上报,为 true 时 SDK 内部不再上报。如只需监听日志回调可不加上注解,只实现方法。
API 如下:
Future<void> uploadUserLog(String appId, String logPath) async {}
使用示例:
@EventConfig(value: true)
@override
Future<void> uploadUserLog(String appId, String logPath) async {
print("SupperAppCustom uploadUserLog:${logPath}");
}

监听基础库更新信息

可以通过重写 TcmppFlutterEventChannel 的 uploadUserLog 方法,来监听基础库更新信息。
说明:
需结合 EventConfig 注解,来定义 SDK 是否更新基础库版本,为 false 时 SDK 内部不再更新基础库。如只需监听更新消息可不加上注解,只实现方法。
API 如下:
Future<void> isUpdateBaseLib(Map<dynamic, dynamic>? data) async {}
使用示例:
@EventConfig(value: true)
@override
Future<void> isUpdateBaseLib(Map<dynamic, dynamic>? data) async {
print("isUpdateBaseLib:${data}");
}


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈