tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

自定义事件处理

PDF
聚焦模式
字号
最后更新时间: 2026-01-29 09:25:47

事件上报

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());

生成配置文件

为自定义事件处理逻辑,如取消 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}");
}


帮助和支持

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

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

文档反馈