代码预览
假如要上报
点击我的主页信息按钮, 并携带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
}