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

注:部分信息需要用到上篇文章里面的字段

附属的信息大致有:
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}

创建自定义标签

通过标签筛选异常
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,230评论 6 13
  • 前言 对于Bug相信对于所有的开发者而言都是噩梦,没有一个app是完美的,尤其是android开发需要适配的版本太...
    Smile__EveryDay阅读 21,440评论 3 18
  • 开始想自己写的,但是看了下面这篇博客写了比我了解的多太多了就直接变成转载了。该博客只能参考作用,请根据最新的官方文...
    Thor_果冻阅读 2,591评论 0 6
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,159评论 1 32
  • 关于人生态度 最好的友情便是,即使时间荏苒,你我天各一方,为了梦想各自为战,为了生活各自忙乱,我也依旧记挂着你的现...
    行与心田阅读 310评论 0 0