From acac3099a67d7a022f0bc256464e73ef4a8bcf60 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Sun, 4 Jan 2026 17:07:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E5=A4=9A=E4=B8=AA=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statisticreporter/shushu/ShushuManager.kt | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/StatisticReporter/src/main/java/com/gamedog/statisticreporter/shushu/ShushuManager.kt b/StatisticReporter/src/main/java/com/gamedog/statisticreporter/shushu/ShushuManager.kt index 2ac4b8d..65e0f28 100644 --- a/StatisticReporter/src/main/java/com/gamedog/statisticreporter/shushu/ShushuManager.kt +++ b/StatisticReporter/src/main/java/com/gamedog/statisticreporter/shushu/ShushuManager.kt @@ -1,12 +1,19 @@ package com.gamedog.statisticreporter.shushu +import cn.thinkingdata.analytics.BuildConfig +import cn.thinkingdata.analytics.TDAnalytics +import cn.thinkingdata.analytics.TDAnalytics.TDAutoTrackEventType import cn.thinkingdata.analytics.TDConfig import cn.thinkingdata.analytics.ThinkingAnalyticsSDK +import cn.thinkingdata.analytics.ThinkingAnalyticsSDK.AutoTrackEventType import com.ama.core.architecture.BaseApp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.launch +import org.json.JSONException +import org.json.JSONObject +import java.util.Dictionary class ShushuManager private constructor() { @@ -32,12 +39,74 @@ class ShushuManager private constructor() { fun initShushu(shushuAppId: String, shushuServerUrl: String) { mMainScope.launch { val config = TDConfig.getInstance(mAppContext, shushuAppId, shushuServerUrl) + config.setMode(if (BuildConfig.DEBUG) TDConfig.ModeEnum.DEBUG else TDConfig.ModeEnum.NORMAL) mShushuSdk = ThinkingAnalyticsSDK.sharedInstance(config) + + configAutoTrack() } } + /** + * 记录用户的具体行为事件。 + * 用户点击按钮、浏览页面、完成购买等。 + */ + fun reportEvent(eventKey: String) { + val properties = JSONObject().apply { + put("product_id", "12345") // 商品ID + put("product_name", "咖啡杯") // 商品名称 + put("price", 29.9) // 商品价格 + put("order_id", "ORDER_20250104_001") // 订单ID + } + TDAnalytics.track(eventKey, properties) + } + + /** + * 设置用户属性(会覆盖同名属性)。 + * 记录用户会员等级、姓名等相对固定的属性。 + */ + fun reportUser() { + try { + val userProperties = JSONObject().apply { + put("user_level", "VIP3") // 用户等级 + put("registration_date", "2025-01-01") // 注册日期 + put("total_orders", 15) // 总订单数 + } + TDAnalytics.userSet(userProperties) + } catch (e: JSONException) { + e.printStackTrace() + } + } + + /** + * 设置全局事件属性,自动附加到每个事件。 + * 应用版本号、用户渠道来源等所有事件都带有的属性。 + */ + fun reportSuper() { + try { + val superProperties = JSONObject().apply { + put("app_version", "1.2.0") + put("channel", "xx应用市场") + put("user_city", "北京") + } + TDAnalytics.setSuperProperties(superProperties) + } catch (e: JSONException) { + e.printStackTrace() + } + } + + /** + * 设置账号ID,将后续行为关联到具体用户。 + * 用户登录成功时调用。 + */ + fun reportLogin(userUUID: String) { + TDAnalytics.login(userUUID) + } + //----------------------- PRIVATE ------------------------// + private fun configAutoTrack() { + TDAnalytics.enableAutoTrack(TDAutoTrackEventType.APP_START or TDAutoTrackEventType.APP_END or TDAutoTrackEventType.APP_INSTALL ) + }