85 lines
2.4 KiB
TypeScript
85 lines
2.4 KiB
TypeScript
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;
|
|
}
|
|
}
|