11/08/2024 16:35:55
异常上报模块开发
一、插件开发说明
异常上报模块支持在游戏发生异常或崩溃时,将异常的堆栈信息进行上报,方便开发人员对异常进行定位和解决。
二、客户端插件开发
2.1 Android 平台
2.1.1 类实现规则说明
- 包名规则:固定为
com.tencent.gcloud.msdk.crash
- 类名规则:
渠道 + Crash
,如:BuglyCrash
- 必须实现
CrashInterface
接口init
函数,用来进行对异常上报模块进行初始化updateChannel
函数,MSDK 会在用户登录或者登出时自动调用这个接口,渠道可以根据当前登录的用户信息对异常上报数据进行设置logInfo
函数,用来进行自定义日志打印,日志信息首先被输出到本地,缓存的日志信息将在异常发生时上报。setUserValue
函数,用来设置异常上报时的用户数据reportException
函数,用来上报自定义异常
2.1.2 异常上报回调说明
如果异常上报模块支持在发生异常时,给予游戏相关回调,并动态的增加游戏设置的追加信息,需要关注 MSDK 提供的两个接口
MSDKCrash.attachmentMessageForException()
,用于获取游戏设置的字符串信息MSDKCrash.attachmentForException()
,用于获取游戏设置的二进制信息
异常上报模块可以在异常回调时,调用这两个方法,将数据追加到将要上报的信息中
2.1.3 CrashInterface 接口
init 函数
异常上报模块初始化函数。建议在异常模块初始化时调用 updateChannel 方法,进行渠道信息的设置。
@Override public void init() { // 渠道的初始化逻辑 ... // 更新渠道信息 updateChannel(); }
updateChannel 函数
更新渠道信息功能。MSDK 会在用户登录或者登出时自动调用这个接口,渠道可以根据当前的用户登录信息对异常上报数据进行设置。
@Override public void updateChannel() { // 获取 MSDK Openid String openId = null; MSDKLoginRet loginRet = MSDKLogin.getLoginRet(); if (loginRet != null && IT.isNonEmpty(loginRet.openID)) { openId = loginRet.openID; } // 调用渠道的设置用户 ID 接口 ... }
logInfo 函数
自定义日志打印功能。用于记录一些关键的业务调试信息, 可以更全面地反应 APP 发生崩溃或异常的上下文环境。日志信息在异常发生时上报。并且日志信息将根据当前设置的日志级别,在本地输出。
@Override public void logInfo(int level, String tag, String log) { // 渠道的自定义日志打印逻辑 ... }
setUserValue 函数
设置异常上报时的用户自定义数据。用户自定义的 Key-Value 数据,通过该接口成功设置以后,将在发送 Crash 时随异常信息一起上报。
@Override public void setUserValue(String key, String value) { // 渠道的设置用户数据逻辑 ... }
reportException 函数
上报自定义异常功能。游戏可以自定义一些异常,并对这些异常进行上报。
@Override public void reportException(int type, String exceptionName, String exceptionMsg, String exceptionStack, HashMap<String, String> extInfo) { // 渠道的上报自定义异常功能 ... }
[info] 详情请参考示例代码
2.2 iOS 平台
2.2.1 类实现规则说明
- 必须实现
MSDKCrashDelegate
接口initCrashReport
函数,用来进行对异常上报模块进行初始化- 【可选】
updateChannel
函数,MSDK 会在用户登录或者登出时自动调用这个接口,渠道可以根据当前用户的登录信息对异常上报数据进行设置 - 【可选】
reportLog
函数,用来进行自定义日志打印,日志信息首先被输出到本地,缓存的日志信息将在异常发生时上报。 - 【可选】
setUserData
函数,用来设置异常上报时的用户数据 - 【可选】
reportException
函数,用来上报自定义异常
2.2.2 异常上报回调说明
回调函数说明:如插件支持 Crash 时的回调,可以通过回调的方式同步方法来通知用户,并且用户可以设定数据返回给到插件做进一步处理,回调函数规则可参考 客户端渠道接入规则
observerID
回调函数 IDkMethodNameCrashExtraMessage
触发MSDKCrashObserver.OnCrashExtraMessageNotify
回调,用户设定自定义 String 数据,可通过 ret.data 获取kMethodNameCrashExtraData
触发MSDKCrashObserver.OnCrashExtraDataNotify
回调,用户设定自定义二进制数据,可通过 ret.data 获取
ret
返回结构- 返回结果为
InnerCrashRet
,用于接收用户设定数据结果
- 返回结果为
methodNameID
MSDK 定义的函数 ID,用于回调方法定义kMethodNameCrashExtraMessage
为自定义二进制数据方法 IDkMethodNameCrashExtraData
为自定义 String 数据方法 ID
2.2.3 MSDKCrashDelegate 接口
initCrashReport 函数
异常上报模块初始化函数。建议在异常模块初始化时调用 updateChannel 方法,进行渠道信息的设置。
- (void)initCrashReport { // 渠道的初始化逻辑 ... // 更新渠道信息 updateChannel(); }
updateChannel 函数
更新渠道信息功能。MSDK 会在用户登录或者登出时自动调用这个接口,渠道可以根据当前的用户登录信息对异常上报数据进行设置。
- (void)updateChannel MSDKLoginRet loginRet; if (MSDKLogin::GetLoginRet(loginRet)) { const char* openID = loginRet.openID.c_str(); // 渠道的设置用户 ID 逻辑 ... } }
reportLog 函数
自定义日志打印功能。用于记录一些关键的业务调试信息, 可以更全面地反应应用发生崩溃或异常的上下文环境。日志信息在异常发生时上报。并且日志信息将根据当前设置的日志级别,在本地输出。
- (void)reportLog:(int)level tag:(NSString *)tag log:(NSString *)log { // 渠道的自定义日志打印逻辑 ... }
setUserData 函数
设置异常上报时的用户自定义数据。用户自定义的 Key-Value 数据,通过该接口成功设置以后,将在发送 Crash 时随异常信息一起上报。
- (void)setUserData:(NSString *)key value:(NSString *)value { // 渠道的设置用户数据逻辑 ... }
reportException 函数
上报自定义异常功能。游戏可以自定义一些异常,并对这些异常进行上报。
- (void)reportException:(int)type exceptionName:(NSString *)exceptionName exceptionMsg:(NSString *)exceptionMsg exceptionStack:(NSString *)exceptionStack extInfo:(NSDictionary *)extInfo{ // 渠道的异常上报逻辑 ... }
[info] 详情请参考示例代码
All rights reserved.