美文网首页
2019-07-18 Bugly上报附属信息及标签筛选

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

作者: 兣甅 | 来源:发表于2019-07-18 10:45 被阅读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}

    创建自定义标签 通过标签筛选异常

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/byeklctx.html