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 回调函数 ID
    • kMethodNameCrashExtraMessage 触发 MSDKCrashObserver.OnCrashExtraMessageNotify 回调,用户设定自定义 String 数据,可通过 ret.data 获取
    • kMethodNameCrashExtraData 触发 MSDKCrashObserver.OnCrashExtraDataNotify 回调,用户设定自定义二进制数据,可通过 ret.data 获取
  • ret 返回结构
    • 返回结果为 InnerCrashRet,用于接收用户设定数据结果
  • methodNameID MSDK 定义的函数 ID,用于回调方法定义
    • kMethodNameCrashExtraMessage 为自定义二进制数据方法 ID
      • kMethodNameCrashExtraData 为自定义 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] 详情请参考示例代码



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""