Analytics.ts 5.19 KB
import { LogLevel } from "../wxsdk/service/LogService";
import WXSDK from "../wxsdk/WXSDK";


export class Analytics {
    private static _instance: Analytics;
    private systemType: number
    static get I(): Analytics {
        return this._instance || (this._instance = new Analytics);
    }

    private static IGNORE_LOGGER = false;

    constructor() {
    }

    private get isSupported() {
        return typeof WXSDK === 'object';
    }

    // 游戏打点
    dot(dot_type: string, data: any = {}) {
        if (typeof my == 'undefined') return
        // wx.aldSendEvent(dot_type, data); //阿拉丁打点,没需求注释即可
        return WXSDK.stat.dot(dot_type, data);
    }

    // loading完成
    loadingFinish() {
        return WXSDK.stat.loadingFinish();
    }
    // 关键行为
    behaviors() {
        return WXSDK.stat.behaviors()
    }
    // 导出打点
    jumps(id, type) {
        return WXSDK.stat.jumps(id, type)
    }

    /**
     * 关卡开始
     * @param stageid 关卡ID, 必须1.1、12.2  “.”前面代表模式 后面代表关卡
     * @param stagename 关卡名称,格式:"xx模式-第x关"
     * @param pattern 模式名称,格式:"xx模式"
     */
    levelStart(stageid, stagename?, pattern?) {
        if (!stagename) stagename = `第${stageid}关`
        if (!pattern) pattern = '普通模式'
        return WXSDK.stat.levelStart(stageid, stagename, pattern)
    }
    /**
     * 关卡进行中
     * @param stageid 关卡ID, 必须1.1、12.2  “.”前面代表模式 后面代表关卡
     * @param stagename 关卡名称,格式:"xx模式-第x关"
     * @param pattern 模式名称,格式:"xx模式"
     * @param event 事件 tools:使用道具 award:奖励
     * @param params_id 道具ID
     * @param params_name 道具名称
     * @param params_count 道具数量
     * @param params_desc 道具描述
     */
    levelRunning(stageid, stagename, pattern, event, params_id, params_name, params_count, params_desc?) {
        if (!stagename) stagename = `第${stageid}关`
        if (!pattern) pattern = '普通模式'
        return WXSDK.stat.levelRunning(stageid, stagename, pattern, event, params_id, params_name, params_count, params_desc)
    }
    /**
    * 关卡结束
    * @param stageid 关卡ID, 必须1.1、12.2  “.”前面代表模式 后面代表关卡
    * @param stagename 关卡名称,格式:"xx模式-第x关"
     * @param pattern 模式名称,格式:"xx模式"
    * @param event complete:成功 fail:失败
    * @param times 时间
    * @param perc 失败时的完成进度 (浮点数)
    */
    async levelEnd(stageid, stagename, pattern, event, times, perc?, valence = 0) {
        if (!stagename) stagename = `第${stageid}关`
        if (!pattern) pattern = '普通模式'
        return WXSDK.stat.levelEnd(stageid, stagename, pattern, event, times, perc, valence)
    }

    /**
     * 视频信息 打点
     * @param adstatus 1.请求 3.展示 5.完成 6.中断 7.失败
     * @param times 视频关闭时间 (完成和中断)需要传
     */
    videoAdStat(adstatus: number, times?) {
        WXSDK.stat.adStat('video', '9999', 2, adstatus, times)
    }

    /**
     * 客户端日志
     * @param content 内容
     * @param level 日志等级
     * @returns 
     */
    clientLog(content, level = LogLevel.debug) {
        return WXSDK.stat.clientLog(content, level)
    }
    /**
     * 资源上报
     * @param id 1体力 2经验 3钻石
     * @param typ 1增加 2减少
     * @param nums 增加或减少的数量
     * @param gsne 消耗场景
     */
    consume(id: number, typ: number, nums: number, gsne: string) {
        return WXSDK.stat.consume(id, typ, nums, gsne)
    }

    /**
     * 游戏行为数据提交(玩一玩)
     * @param action_code 用户在游戏中的行动编码
     * @param action_finish_channel 用户完成行动的渠道
     * @param action_finish_date 用户完成时间
     * @param status 上报的结果 0成功 其他失败
     */
    AlipayGameCenter(action_code: string, action_finish_channel: string, action_finish_date: string, status: string) {
        WXSDK.stat.AlipayGameCenter(action_code, action_finish_channel, action_finish_date, status);

    }

    /**
     * 支付行为上报
     * @param orderid 订单号,游戏方订单号
     * @param goodid 游戏方商品ID
     * @param goodname 游戏方商品名字
     * @param money 支付金额,单位分
     * @param paytype 支付方式,1客服消息支付 3米大师支付 4小程序支付 6二维码支付 7字节钱包 8QQ钱包 9华为钱包 10支付宝小游戏支付 11支付宝小程序(跳转到另外一个小程序支付)13美团支付
     * @param paystatus 1支付成功 2支付失败
     * @param ordertype 支付平台,android,ios,windows,mac
     */
    orderLogReport(orderid: string, goodid: string, goodname: string, money: number, paytype: number, paystatus: number, ordertype: string) {
        WXSDK.stat.orderLogReport(orderid, goodid, goodname, money, paytype, paystatus, ordertype)
    }


}
export enum EventKey {
    toggleScene = 'toggleScene',
    recoverGame = 'recoverGame',
    replayGame = 'replayGame',
    settingClose = 'settingClose',
    updateLvUI = 'updateLvUI',

}