2019-07-18 Bugly上报附属信息及标签筛选

2019-07-18  本文已影响0人  兣甅
注:部分信息需要用到上篇文章里面的字段

附属的信息大致有:
1.渠道名称
2.APP的build号(app的版本会自动读取,不用自己上报)
3.接口地址使用的是正式服还是测试服
4.APP的编译是debug还是release
5.登录后用户的id
6.登录后用户的手机号(方便联系用户解决bug)
7.上报自定义的异常或者统计


import android.app.Application
import android.text.TextUtils
import com.aimymusic.midamusic.application.App
import com.aimymusic.midamusic.application.BuildConfigApp
import com.aimymusic.midamusic.repository.UserRepository
import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.Utils
import com.tencent.bugly.crashreport.CrashReport

object BuglyManager {
  /**
   * 初始化bugly
   */
  fun initBugly(application: Application, id: String) { //bugly异常检测
    //初始化key
    CrashReport.initCrashReport(application, id, BuildConfigApp.DEBUG)
    //上报渠道信息
    if (BuildConfigApp.isDeveloper(application)) {
      //开发人员自己运行的异常渠道收集
      CrashReport.setAppChannel(
        application,
        "开发人员AS运行-${if (BuildConfigApp.DEBUG) "Debug" else "Release"}"
      )
    } else {
      //正常打包的异常渠道收集
      CrashReport.setAppChannel(application, BuildConfigApp.getChannelName(application))
    }
    //上报build信息
    CrashReport.putUserData(application, "build", AppUtils.getAppVersionCode().toString())
    //上报地址使用的是正式服还是测试服
    CrashReport.putUserData(
      application,
      "httpType",
      if (BuildConfigApp.DEBUG) "Debug" else "Release"
    )
    //上报APP运行使用的是Release包还是Debug包
    CrashReport.putUserData(
      application,
      "appType",
      if (BuildConfigApp.DEBUG) "Debug" else "Release"
    )
    setBuglyUserInfo()
  }

  /**
   * 给bugly设置用户信息
   */
  private fun setBuglyUserInfo() {
    UserRepository.userInfo?.let { user ->
      CrashReport.setUserId(user.uid?.toString())
      //上报用户id
      CrashReport.putUserData(App.INSTANCE, "userId", user.uid?.toString() ?: "")
      //上报用户手机号
      CrashReport.putUserData(App.INSTANCE, "phoneNumber", user.phone ?: "")
    }
  }

  /**
   * 上报指定的异常信息
   */
  fun reportException(msg: String?, code: Int) {
    val message = if (TextUtils.isEmpty(msg)) "message == null" else msg
    CrashReport.setUserSceneTag(Utils.getApp(), code)
    CrashReport.postCatchedException(Throwable(message))
  }
}
附:上报自定义的异常,需要在后台设置TAG(最好定义一个常量类,里面全部放对应的Bugly的TAG对应id),调用reportException的时候将TAG的id一并传入(原本setUserSceneTag是设置异常上报的使用场景的,但是这里用他来方便筛选自定义的异常)

\color{red}{这里有个坑:因为异步上报的原因,可能会导致其他异常的上报也附带了自定义上报的TAG}

创建自定义标签 通过标签筛选异常
上一篇下一篇

猜你喜欢

热点阅读