import { IAnalyticsSDK } from "../core/IAnalyticsSDK"; import { logger } from "db://assets/Scripts/Main/Common/Logger"; /** * UmaAnalyticsSDK * * - 负责集成友盟统计(UMeng+) * - 提供初始化、事件上报、开关控制等功能 */ export class UmaAnalyticsSDK implements IAnalyticsSDK { private enabled: boolean = false; /** * 初始化友盟统计 * @param cb 初始化完成后的回调 * * - 通常在游戏启动时调用 * - 内部调用 window["wx"].uma.init 或其他平台的 UMA 初始化 */ init(cb?: Function): void { try { if (typeof window !== "undefined" && window["wx"] && window["wx"].uma) { window["wx"].uma.init({ appKey: "YOUR_UMA_APP_KEY", // TODO: 替换成实际 key useOpenid: true, autoGetOpenid: true, debug: false, uploadUserInfo: true, }); this.enabled = true; logger.info("UmaAnalyticsSDK 初始化完成 "); } else { this.enabled = false; logger.warn("UmaAnalyticsSDK 初始化失败 (未检测到 wx.uma)"); } } catch (e) { this.enabled = false; logger.error("UmaAnalyticsSDK 初始化异常:", e); } cb && cb(); } /** * 是否启用 UMA 统计 * * @returns true 启用,false 关闭 */ isAnalyticsEnabled(): boolean { return this.enabled; } /** * 上报事件 * @param eventName 事件名称 * @param value 事件参数(可选) * * - 例如:trackEvent("_um.talk.round", { round: 5 }) */ trackEvent(eventName: string, value?: any): void { if (!this.enabled) { logger.debug("UmaAnalyticsSDK 未启用,跳过事件上报:", eventName, value); return; } try { window["wx"].uma.trackEvent(eventName, value || {}); logger.info("UmaAnalyticsSDK 上报事件:", eventName, value); } catch (e) { logger.error("UmaAnalyticsSDK 上报事件失败:", e); } } /** * 销毁 SDK * * - 用于释放资源或清理缓存 * - 通常在游戏退出或切换环境时调用 */ destroy(): void { logger.info("UmaAnalyticsSDK 已销毁"); this.enabled = false; } }