TuyooSDKPackage/Packages/com.bywaystudios.tuyoosdk/Plugins/WebGL/ChannelResource/tywx/dn-sdk-minigame-1.5.4/index.d.ts
2025-12-06 10:50:57 +08:00

492 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* SDK 初始化参数
*/
interface SdkConfig {
/**
* 数据源ID必填
*/
user_action_set_id: number;
/**
* 加密key必填
*/
secret_key: string;
/**
* 微信小程序/小游戏APPIDwx开头必填
*/
appid: string;
/**
* 微信 openidopenid 和 unionid 至少填一个, 可以调用 setOpenId 设置
*/
openid?: string;
/**
* 微信 unionidopenid 和 unionid 至少填一个, 可以调用 setUnionId 设置
*/
unionid?: string;
/**
* 自定义用户ID选填
*/
user_unique_id?: string;
/**
* 是否自动采集事件
*/
auto_track?: boolean;
/**
* 是否自动采集属性
*/
auto_attr?: boolean;
}
/**
* 小程序/小游戏信息
*/
interface GameInfo {
/**
* 广告点击id、曝光id
*/
ad_trace_id?: string;
/**
* 页面路径,小游戏没有
*/
page_url?: string;
/**
* 页面名称,小游戏没有
*/
page_title?: string;
/**
* 组件名称
*/
component_name?: string;
/**
* 场景来源
*/
source_scene?: number;
/**
* 渠道号
*/
pkg_channel_id?: string;
/**
* 框架信息,小游戏没有
*/
framework?: string;
/**
* 渠道来源
*/
channel: string;
/**
* 启动参数
*/
launch_options: string;
}
/**
* 设备信息
*/
interface DeviceInfo {
/**
* 设备品牌
*/
device_brand: string;
/**
* 设备型号
*/
device_model: string;
/**
* 微信App版本
*/
wx_version: string;
/**
* 微信基础库版本
*/
wx_lib_version: string;
/**
* 微信客户端平台
*/
wx_platform: string;
/**
* 操作系统
*/
os: string;
/**
* 操作系统版本
*/
os_version: string;
/**
* 设备性能等级
*/
benchmark_level: number;
/**
* 屏幕高度
*/
screen_height: number;
/**
* 屏幕宽度
*/
screen_width: number;
}
interface TrackBaseInfo extends SdkConfig, DeviceInfo {
local_id: string;
sdk_name: string;
sdk_version: string;
inner_param: {
app_version: string;
app_env_version: string;
};
}
/**
* 行为信息
*/
interface ActionInfo {
action_type: string;
action_param?: Record<string | number | symbol, unknown>;
is_sdk_auto_track: boolean;
session_id: string;
log_id: number;
action_id: string;
action_time: number;
revised_action_time: number;
is_retry: boolean;
retry_count: number;
ad_trace_id?: string;
page_url?: string;
page_title?: string;
component_name?: string;
source_scene?: number;
pkg_channel_id?: string;
/**
* 网络类型
*/
network_type?: string;
inner_param?: Record<string | number | symbol, unknown>;
channel?: string;
}
interface LogParams {
log_type: string;
code?: number;
message?: string;
err_stack?: string;
user_action_set_id?: number;
appid?: string;
local_id?: string;
session_id?: string;
sdk_name?: string;
sdk_version?: string;
page_url?: string;
framework?: string;
device_brand?: string;
device_model?: string;
wx_version?: string;
wx_lib_version?: string;
wx_platform?: string;
os?: string;
os_version?: string;
}
interface QueueProps {
/**
* 数据源ID用于本地存储队列key
*/
userActionSetId: number;
/**
* 队列长度
*/
maxLength: number;
}
interface QueueManagerProps extends QueueProps {
/**
* OG事件列表
*/
ogEvents: string[];
}
interface IEvent extends ActionInfo {
inner_status?: string;
}
/**
* 队列原子操作
*/
declare class Queue {
protected maxLength: any;
protected userActionSetId: any;
protected lostActionMaps: Record<string, number>;
private stack;
private localStorageKey;
private timeStamp;
constructor({ userActionSetId, maxLength }: QueueProps);
getItems(): IEvent[];
getStorage(): IEvent[];
/**
* 上报丢失条数到日志系统
*/
reportLostNum(): void;
/**
* 获取丢失条数map
* @returns 丢失条数map
*/
getLostMaps(): Record<string, number>;
protected init(): void;
protected addItem(eventData: IEvent): void;
protected removeItems(actionIds: string[]): void;
protected updateForReportFail(actionIds: string[]): void;
protected updateForReporting(actionIds: string[]): void;
protected updateAllStack(stack: IEvent[]): void;
protected updateToStorage(): void;
/**
* 更新丢失条数
* @param sessionId 当前被丢弃行为的会话id
*/
protected updateLostAction(sessionId: string): void;
/**
* 设置时间戳
*/
protected setTimeStamp(): void;
}
declare class QueueManage extends Queue {
protected ogEvents: string[];
constructor({ userActionSetId, maxLength, ogEvents }: QueueManagerProps);
/**
* 获取可上报的队列
* @param reportMaxLength 需要上报的队列最大长度
*/
getReportableActions(reportMaxLength?: number): IEvent[];
/**
* 添加行为到队列
* @param eventData 单条行为数据
*/
addAction(eventData: IEvent): void;
/**
* 根据acition_id删除行为
* @param actionIds 行为id列表
*/
removeActions(actionIds: string[]): void;
/**
* 上报失败时更新队列状态
* @param actionIds
*/
updateActionsForReportFail(actionIds: string[]): void;
/**
* 上报时更新队列状态为reporting
* @param actionIds 需要更新的行为id数组
*/
updateActionsForReporting(actionIds: string[]): void;
/**
* 获取可上报队列长度
* @returns 可上报队列长度
*/
getReportableActionsLength(): number;
/**
* 按照优先级从大到小给队列排序
* @param currEvent 当前事件
* @param stack 当前队列
*/
sortQueue(currEvent: IEvent, stack: IEvent[]): IEvent[];
/**
* 计算优先级
* @param currTime 当前时间
* @param event 行为事件
* @returns 权重值
*/
private caculateWeight;
/**
*
* @param currTime 当前时间
* @param actionTime 队列行为时间
* @returns 权重值
*/
private formatWeight;
}
interface ConfigManager {
getRealTimeActionList: () => Array<string>;
getRequestTimeout: () => number;
}
interface ActionReporterProps {
getBaseInfo: () => TrackBaseInfo;
reportLog: (param: LogParams) => void;
queueManager: QueueManage;
configManager?: ConfigManager;
}
/**
* 行为上报类
*/
declare class ActionReporter {
private static currentRequestCount;
private static requestConcurrency;
static setRequestConcurrency(n: number): void;
private getBaseInfo;
private reportLog;
private queueManager;
private configManager;
private cgiBatchSize;
private reportThreshold;
private reportDelay;
private triggerExecuteSend;
private inspectDelay;
private inspectTimer;
private isNeedContinueSend;
constructor(props: ActionReporterProps);
/**
* 批量上报行为track的时候触发
*/
batchSend(): void;
/**
* 全量上报, flush的时候触发
*/
flushSend(): void;
/**
* 执行指定数量的行为上报逻辑超过接口batch上限则并行发送请求
*/
private executeSend;
/**
* 组装上报用的行为数据
*/
private generateActionReportParams;
/**
* 上报接口请求成功逻辑处理
* @param resData
* @param actionIdList
*/
private dealSuccessData;
/**
* 上报接口请求失败逻辑处理
* @param errData
* @param actionIdList
*/
private dealFailData;
/**
* wx.request文档https://developers.weixin.qq.com/minigame/dev/api/network/request/wx.request.html
* @param param.data:接口请求参数、param.actionIdList:行为id列表
* @returns
*/
private report;
/**
* 启动上报定时器
*/
private startInspectTimer;
}
declare abstract class SdkExtCommon {
protected special_method_symbol: symbol;
/**
* 付费
*/
onPurchase(value: number): void;
/**
* 进入前台
*/
onEnterForeground(): void;
/**
* 进入后台
*/
onEnterBackground(): void;
/**
* 启动
*/
onAppStart(): void;
/**
* 退出
*/
onAppQuit(): void;
/**
* 收藏
*/
onAddToWishlist(): void;
protected wrapTrack(action_type: ActionInfo["action_type"], action_param?: ActionInfo["action_param"]): void;
abstract track(action_type: ActionInfo["action_type"], action_param?: ActionInfo["action_param"]): void;
}
declare abstract class sdkExt extends SdkExtCommon {
/**
* 注册
*/
onRegister(): void;
/**
* 创角
*/
onCreateRole(name?: string): void;
/**
* 完成新手教程
*/
onTutorialFinish(): void;
}
declare const initializedInstanceSymbol: unique symbol;
declare class SDK extends sdkExt {
private static [initializedInstanceSymbol];
static setRequestConcurrency(n: number): void;
static setDebug(debug: boolean): void;
protected env: string;
protected sdk_version: string;
protected sdk_name: string;
protected config?: SdkConfig;
protected deviceInfo: Partial<DeviceInfo>;
protected gameInfo: Partial<GameInfo>;
protected session_id: string;
protected log_id: number;
protected queueManage?: QueueManage;
protected actionReporter?: ActionReporter;
protected openid?: string;
protected unionid?: string;
protected user_unique_id?: string;
protected inited: boolean;
constructor(sdkConfig: SdkConfig);
/**
* 数据上报方法
*/
track(action_type: ActionInfo['action_type'], action_param?: ActionInfo['action_param']): void;
/**
* 立即上报数据
*/
flush(): void;
/**
* 设置 openId
*/
setOpenId(openid: string): void;
/**
* 设置 unionid
*/
setUnionId(unionid: string): void;
/**
* 设置 user_unique_id
* @param user_unique_id
*/
setUserUniqueId(user_unique_id: string): void;
protected doReportOnEnterBackground(): void;
/**
* 获取数据上报时所需要的 info 参数
*/
private getTrackBaseInfo;
/**
* 生成上报队列需要的行为数据
* @param actionParams 行为参数
* @param is_sdk_auto_track 是否自动采集
* @returns
*/
private createAction;
/**
* 给指定行为的inner_param字段追加字段
* @param action 待追加字段的行为
* @param key 待添加到inner_param字段的key
* @param value key对应的value
*/
private addActionInnerParam;
/**
* 不同行为携带的渠道来源判断逻辑
* @param actionType
* @returns
*/
private getChannelByActionType;
/**
* 上报日志
* @param params 日志参数
*/
private reportLog;
private useAutoTrack;
private getAutoProxyRemoteConfig;
/**
* 设置openid时如果值合法缓存到Storage
*/
private saveValidOpenidToStorage;
}
export { SDK };