简单的封装一个安卓埋点上报函数

211 阅读1分钟

代码预览

假如要上报 点击我的主页信息按钮, 并携带nickName, 点位为ON_CLICK_MINE_INFO, 那么只需:

Reporter.fire(REvent.ON_CLICK_MINE_INFO(nickName = "小熊猫"))

详细代码

// 上报类
object Reporter {
    fun fire(event: REvent) {
        // 在io线程上报, 并且带异常处理防止崩溃
        GlobalScope.launch(Dispatchers.IO + CoroutineExceptionHandler { _, throwable ->
            throwable.printStackTrace()
        }) {
            val eventJson = GsonUtils.toJson(event)
            val eventMap = GsonUtils.fromJson<MutableMap<String, String>>(eventJson, object : TypeToken<Map<String, String>>() {}.type)
            上报SDK.getInstance().reportEvent(event::class.java.simpleName, eventMap) // 假设SDK对于点位要求是一个map类型
        }
    }
}

// 点位信息
interface REvent {
    // 点击我的主页信息 
    class ON_CLICK_MINE_INFO(val nickName: String) : REvent
    // 点击主页TAB
    class ON_CLICK_MAIN_TAB : REvent
}