GameletApi

作者:Administrator 发布时间: 2026-08-04 阅读量:1 评论数:0

/**
 * -------------------------------------------------------
 * GameletAPI 基础接口
 * + 注意其中有一些async异步函数, 为保证时序调用可以await等待
 * -------------------------------------------------------
 */
import { IGameletAPI } from "./interfaces/igameletapi";
import { IUserdata } from "./interfaces/ipresetdata";
declare class GameletAPIImpl implements IGameletAPI {
    private gameletAPIInst;
    private SDKType;
    constructor();
    /**
     * 是否可以调用小应用平台SDK API
     * @returns true/false
     */
    canUsePlatformAPI(): boolean;
    /**
     * 获取运行时环境.
     * @returns 字符串类型的运行环境标识
     *  + 在 JS-SDK 中返回 jssdk-appwindow / jssdk-preprocessor
     *  + unitySDK 中返回 unity
     *  + PxIDE 中返回 PxIDE
     */
    getRuntimeEnv(): string;
    /**
     * 获取向其他页面发送消息的完整事件名
     * 本接口目前仅JS-SDK可用,unitySDK会反会空字符串
     * @param evt 自定义事件
     * @returns 完整的事件名
     */
    genAppScopeEventName(evt: string): string;
    /**
     * 获取小应用 appID, appID 是开发者在管理点申请的小应用id
     */
    getAppID(): number;
    /**
     * deprecated 本接口即将废弃,请改为使用 getAppID
     */
    getAppId(): number;
    /**
     * 获取小应用appKey, appKey信息是运行时SDK注入的,开发者使用本接口直接获取即可
     */
    getAppKey(): string;
    /**
     * 获取小应用appName, appName是在管理端申请小应用时填写的英文名
     */
    getAppName(): string;
    /**
     * 获取小应用appVersion, 比如"0.0.1"
     */
    getAppVersion(): string;
    /**
     * 获取管理端开发配置中设置的entranceConfig的指定字段.
     * 因为entranceConfig是k-v格式,本方法接收key返回value
     */
    getAppEntranceConfig(key: string): any;
    /**
     * 获取打开页面的open消息
     * 通常open消息是游戏发过来的, 是一个JSON字符串, 其中可带一些活动需要的信息
     */
    getOpenArgs(): string;
    /**
     * 获取小应用正式/测试环境,本环境对应着小应用管理端上正式/测试发布
     * @returns true:正式环境  false:测试环境
     */
    getIsProductEnvironment(): boolean;
    /**
     * 获取小应用是否白名单发布
     * @returns true:白名单发布 false:按区服发布
     */
    getIsHitBackendWhitelist(): boolean;
    /**
     * 是当前环境否支持callbroker
     */
    getIsSupportCallbroker(): boolean;
    /**
     * 获取平台描述符
     * @returns pc/android/mac/ios
     */
    getPlatformDesc(): string;
    /**
     * 获取引擎信息和版本,返回值是一个JsonString
     */
    getEntryInfo(): string;
    /**
     * 获取管理端配置的Faas地址
     * @returns 返回地址或者""
     */
    getFaasAddr(): string;
    /**
     * 获取用户登录态
     * @returns 登录态Object
     */
    getUserData(): Promise<IUserdata>;
    /**
     * 刷新 token
     */
    refreshUserDataTokens(): Promise<void>;
    /**
     * 暂存数据
     * 本接口把数据暂存在内存中,当杀进程或是logout时数据会丢失。
     * 本接口主要用来在数据虚拟机和页面虚拟机,或是多个页面虚拟机之间传递数据。
     * 本接口仅接收string类型数据,object请JSON.stringfy()序列化后再保存。
     * 数据以k-v格式记录,不同appid以相同key记录的数据不会产生冲突
     * 取数据使用getDataStash
     */
    setDataStash(key: string, value: string): Promise<void>;
    /**
     * 获取暂存的数据
     */
    getDataStash(key: string): Promise<string>;
    /**
     * 清除暂存的数据
     */
    clearDataStash(): Promise<void>;
    /**
     * 持久化存储数据。
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口,PandoraUnitySDK 可使用本接口
     * 数据以app为维度隔离存储, 可以在同一个app的不同页面对数据进行操作。不同app不能相互读取数据。存储的信息如15天不更新,会自动清除。
     * 读取数据使用readCookie
     * @param customerName 自定义key
     * @param content 数据内容
     * @returns 如需等待数据存储完毕需使用await
     */
    writeCookie(customerName: string, content: string): Promise<void>;
    /**
     * 读取持久化数据接口
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口, PandoraUnitySDK 可使用本接口
     * @param customerName 自定义key
     * @returns 数据内容,需使用await
     */
    readCookie(customerName: string): Promise<string>;
    /**
     * 按角色持久化存储数据。
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口,PandoraUnitySDK 可使用本接口
     * 数据以app+roleId为维度隔离存储,。存储的信息如15天不更新,会自动清除。
     * 读取数据使用 readRoleCookie
     */
    writeRoleCookie(customerName: string, content: string): Promise<void>;
    /**
     * 读取角色维度的持久化数据接口
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口, PandoraUnitySDK 可使用本接口
     * @param customerName 自定义key
     * @returns 数据内容,需使用await
     */
    readRoleCookie(customerName: string): Promise<string>;
    /**
     * 删除指定key的持久化内容,可以删除 writeCookie/writeRoleCookie 存储的内容
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口, PandoraUnitySDK[无此接口, 调用无效]
     * @param customerName 自定义key
     * @returns 如需等待数据删除完毕需使用await
     */
    deleteCookie(customerName: string): Promise<void>;
    /**
     * 监听游戏发送事件
     */
    addOnGameCommandListener(func: (cmd: string) => void): void;
    /**
     * 移除游戏事件的监听
     * 关闭页面时要移除监听事件
     */
    removeOnGameCommandListener(func: (cmd: string) => void): void;
    /**
     * 监听服务端push事件
     */
    addOnSrvPushDataListener(func: (msg: string) => void): void;
    /**
     * 移除服务端事件的监听
     * 关闭页面时要移除监听事件
     */
    removeOnSrvPushDataListener(func: (msg: string) => void): void;
    /**
     * 自定义消息事件,可以用于页面间消息传递
     * @param evt 事件名
     * @param func 回调函数
     */
    addEventListener(evt: string, func: (...args: any[]) => void): void;
    /**
     * 移除自定义消息事件
     * @param evt 事件名
     * @param func 回调函数
     */
    removeEventListener(evt: string, func: (...args: any[]) => void): void;
    /**
     * 触发自定义事件
     * @param evt 事件名
     * @param args 参数,通常参数是一个JSON字符串
     */
    dispatchEvent(evt: string, ...args: any[]): void;
    /**
     * 增加本页面事件监听,此接口只适用于同一页面的事件处理
     * 注意:数据虚拟机和页面虚拟机是两个页面,不适用于本方法
     * @param evt 事件名
     * @param func 回调函数
     */
    addLocalEventListener(evt: string, func: (...args: any[]) => void): void;
    /**
     * 移除本页面事件监听,此接口只适用于同一页面的事件处理
     * 注意:数据虚拟机和页面虚拟机是两个页面,不适用于本方法
     * @param evt 事件名
     * @param func 回调函数
     */
    removeLocalEventListener(evt: string, func: (...args: any[]) => void): void;
    /**
     * 触发自定义页面内事件
     * @param evt 事件名
     * @param args 参数,通常参数是一个JSON字符串
     */
    dispatchLocalEvent(evt: string, ...args: any[]): void;
    /**
     * 给游戏发送协议
     * @param msg 协议体,是一个JSON字符串
     */
    callGame(msg: string): void;
    /**
     * 打开一个新页面。具体逻辑是首先使用appID查询活动,当 appID 无法查询到活动信息时,则使用appName查找活动并打开对应页面。
     * 注意:数据虚拟机中打开活动页面只能在白名单发布中使用
     * @param appID 新页面的appid, 如果希望使用appName打开页面,appID可以填-1
     * @param extend 扩展字段。k-v形式.支持打开指定页面 {appPage:"pageName"} , Unity需指定父节点层级 {parentPath:"父节点层级"}
     */
    open(appID: number, extend?: object): void;
    /**
     * 关闭页面。如果不传入appID默认调用window.close()关闭自身
     * 注意:正常活动页面应直接调用window.close()关闭自身。此接口提供给地址栏使用,使用时请务必确认关闭逻辑符合预期。
     * @param appID 被关闭页面的appid, 如果不填则关闭本页面
     * @param extend 扩展字段。k-v形式.支持关闭指定页面 {appPage:"pageName"}
     */
    close(appID?: number, extend?: object): void;
    /**
     * 调用broker长连接
     * @param commandId 命令字
     * @param subCommandId 子命令字
     * @param req 请求结构体
     * @param callback 回调函数
     */
    callApplicationBroker(commandId: number, subCommandId: number, req: object, callback: (msg: any) => void): void;
    /**
     *
     * -------------------------------------------------------
     * 数据上报相关接口
     * -------------------------------------------------------
     */
    /**
      * [for GameletSDK 1.2.0] 统计数据上报接口,主要用于经分等统计。上报渠道会根据游ATM, TDM, Intl 的接入渠道自动选择
      * 2022.12之后新接入和升级GameletSDK的业务可使用此接口,旧版GameletSDK和PandoraUnitySDK活动仍使用reportToATM/reportXXXToTDM做统计和监控上报
      * @param iType 行为类型, 从可以1开始
      * @param iChangjingId 行为中文名称,比如活动曝光
      * @param iGoodsId 礼包信息,填写礼包id
      * @param iCountId 任务信息
      * @param iFee 购买信息,填写购买数量
      * @param iFlowId 推荐信息,填写推荐指标id
      * @param extendList 保留字段,扩展字段是一个数组(不要用object), 数组每个成员为name/value形式,例如:[{"name":"reserve0","value":"0"}, {"name":"reserve1","value":"1"}, ...],name和value的值都是字符串类型。默认支持10个扩展字段(reserve0~reserve9),需按顺序填写,多余的字段会被忽略,不会落在表里。
      *                   注意:1.value字段必须为string类型;2.如果扩展字段为空的话,默认不传参数即可,不要传{}
      *                   特别注意:extendList 中的 name 必须是 reserve0 ~ reserve9, 必须从0开始保持连续,不要跳跃
      */
    reportStatsV2(iType: number, iChangjingId: string, iGoodsId: string | number, iCountId: number, iFee: number, iFlowId: number, extendList?: Array<Object> | undefined, appID?: number): void;
    /**
     * [for GameletSDK 1.2.0] 监控上报接口,主要用于监控小应用状态。上报渠道会根据游ATM, TDM, Intl 的接入渠道自动选择
     * 2022.12之后新接入和升级GameletSDK的业务可使用此接口,旧版GameletSDK和PandoraUnitySDK活动仍使用reportToATM/reportXXXToTDM做统计和监控上报
     * 监控上报
     * @param tag 用户自定义tag. 由字母,下划线,数字组成,长度小于32个字符
     * @param content 上报内容,累加类型可以填''
     * @param itype 0: 数值累加型, 2:字符串上报
     */
    reportMonitorV2(tag: string, content: string, itype: number): void;
    /**
     * [预留接口,暂不使用] 通过FAAS接口上报自定义字符串,注意控制上报数量
     * @param content 上报的字符串内容
     * @param tag 标签. 注意标签仅支持英文, 数字, 下划线
     */
    faasReportStringToTDM(content: string, tag: string): Promise<any>;
    /**
     * [预留接口,暂不使用] 通过FAAS接口上报累加类型
     * @param tag 标签. 注意标签仅支持英文, 数字, 下划线
     */
    faasReportNumberToTDM(tag: string): Promise<any>;
    /**
      * [for GameletSDK, PandoraUnitySDK] ATM 经分上报接口
      * 相比 reportStats 精简了参数
      * @param iType 行为类型, 从可以1开始
      * @param iChangjingId 行为中文名称,比如活动曝光
      * @param iGoodsId 礼包信息,填写礼包id
      * @param iCountId 任务信息
      * @param iFee 购买信息,填写购买数量
      * @param iFlowId 推荐信息,填写推荐指标id
      * @param extendList 保留字段,扩展字段是一个数组(不要用object), 数组每个成员为name/value形式,例如:[{"name":"reserve0","value":"0"}, {"name":"reserve1","value":"1"}, ...],name和value的值都是字符串类型。默认支持10个扩展字段(reserve0~reserve9),需按顺序填写,多余的字段会被忽略,不会落在表里。
      *                   注意:1.value字段必须为string类型;2.如果扩展字段为空的话,默认不传参数即可,不要传{}
      *                   特别注意:2.extendList 中的 name 必须是 reserve0 ~ reserve9, 必须从0开始保持连续,不要跳跃
      */
    reportToATM(userdata: IUserdata, iType: number, iChangjingId: string, iGoodsId: number, iCountId: number, iFee: number, iFlowId: number, extendList?: Array<Object> | undefined): void;
    /**
     * [for GameletSDK, PandoraUnitySDK] ATM 经分上报接口,全参数
     * 和 reportToATM 底层逻辑一致
     * 特别注意:extendList 中的 name 必须是 reserve0 ~ reserve9, 必须从0开始保持连续,不要跳跃
     */
    reportStats(userdata: IUserdata, iModule: number, iChannelID: number, iType: number, iActId: number, iJumpType: number, sJumpURL: string, sRecommendID: string, sChangjingID: string | number, iGoodsID: number, iCountID: number, iFee: number, iActStyle: number, iFlowID: number, sExtendList: Array<Object> | undefined): void;
    /**
     * [Only for GameletSDK] 传入小应用的appID, appKey. 校验通过后返回应用信息. 如果传入的 appID 不存在或者 appKey 校验失败会报错并返回 {}
     * 传入信息正确时返回的app信息
     * {
     *      appID:number,
     *      appName:string,
     *      appVersion:string,
     *      appKey:string
     * }
     */
    getAppInfo(appID: number, appKey: string): Promise<any>;
    /**
     * [Only for GameletSDK] 查询活动加载状态(可查询其他活动)
     * @param appID 活动id
     * @returns
     * {
     *    appEntranceExecuted: puerts活动是否已开始执行,
     *    appPreprocessStarted: pixui活动虚拟机是否已启动,
     * }
     */
    queryAppStatus(appID: number): Promise<any>;
    /**
     * [Only for GameletSDK] 获取资源类型小应用的信息
     * 目前只在 JS SDK 1.7.5 及以上版本实现
     *
     * 返回数据是一个 json 字符串,例如
     * {
     *     "2704": {
     *         "version": "0.0.1",
     *         "sourcelist": [
     *             {
     *                 "url": "https://v2-down-gamelet.sgameglobal.com/ngame_garena_tw/open/2704/594f527238d276ef66a71c928cf5b11f/gamelet2704downloadresource1_bin.zip",
     *                 "luacmd5": "13408EBE2CE6F741EAD6724D409CAC12",
     *                 "downloadDone": true,
     *                 "totalSize": 1729614,
     *                 "loadedSize": 1729614
     *             }
     *         ]
     *     },
     *     "2705": {
     *         "version": "0.0.1",
     *         "sourcelist": [
     *             {
     *                 "url": "https://v2-down-gamelet.sgameglobal.com/ngame_garena_tw/open/2705/e73bce76346744f162a5fec560d10a46/gamelet2705downloadresource2_bin.zip",
     *                 "luacmd5": "83BC568580CDE1CC20A104CB297F526C",
     *                 "downloadDone": false,
     *                 "totalSize": 1729617,
     *                 "loadedSize": 2048
     *             }
     *         ]
     *     }
     * }
     */
    getResourceAppsInfo(): Promise<string>;
    /**
     * [Only for GameletSDK] 获取小应用资源包下载目录

     * 目前只在 JS SDK 1.7.5 及以上版本实现
     */
    getAppDownloadPath(): Promise<string>;
    /**
     * [Only for GameletSDK] 缓存资源到本地(存储时效15天)
     * @param url 资源地址
     * @param callback 完成回调
     */
    cacheAsset(url: string, callback: (savePath: string, isSuccess: boolean) => void): void;
    /**
     * [Only for GameletSDK] 查询资源是否缓存
     * @param url 资源地址
     */
    isAssetCached(url: string): Promise<boolean>;
    /**
     * [Only for GameletSDK] 获取资源缓存路径
     * @param url 资源地址
     */
    getAssetCachePath(url: string): Promise<string>;
    /**
     * [Only for GameletSDK] 保存资源到本地(永久)
     * @param url 资源地址
     * @param callback 完成回调
     */
    storeAsset(url: string, callback: (savePath: string, isSuccess: boolean) => void): void;
    /**
     * [Only for GameletSDK] 查询资源是否保存
     * @param url 资源地址
     */
    isAssetStored(url: string): Promise<boolean>;
    /**
     * [Only for GameletSDK] 获取资源保存路径
     * @param url 资源地址
     */
    getAssetStorePath(url: string): Promise<string>;
    /**
     * [Only for GameletSDK] 获取JSSDK版本号(只支持在前置虚拟机中使用)
     */
    getJSSDKVersion(): string;
    /**
     * [Only for GameletSDK] 计算文件的 MD5 哈希值
     * 目前只在 JS SDK 1.7.5 及以上版本实现
     *
     * @param filePath 文件路径
     * @returns 文件的 MD5 哈希值
     */
    md5HashFile(filePath: string): Promise<string>;
    /**
     * [Only for GameletSDK] 计算字符串的 MD5 哈希值
     * 目前只在 JS SDK 1.7.5 及以上版本实现
     *
     * @param text 字符串值
     * @returns 字符串的 MD5 哈希值
     */
    md5HashString(text: string): Promise<string>;
    /**
     * -------------------------------------------------------
     * Pandora-Unity-SDK 开发预留接口
     * -------------------------------------------------------
     */
    /**
     * [for PandoraUnitySDK] 上报异常信息到TDM,在小应用管理端  监控及告警 - 应用监控 - 标签: JSScriptException 下查询
     * @param content 异常信息字符串
     */
    reportJSExceptionStringToTDM(content: string): void;
    /**
     * [for PandoraUnitySDK] 上报自定义字符串,注意控制上报数量
     * @param content 上报的字符串内容
     * @param tag 标签. 注意标签仅支持英文, 数字, 下划线
     */
    reportStringToTDM(content: string, tag: string): void;
    /**
     * [for PandoraUnitySDK] 上报累加类型
     * @param tag 标签. 注意标签仅支持英文, 数字, 下划线
     */
    reportNumberToTDM(tag: string): void;
    /**
     * [for PandoraUnitySDK/UE_SDK] Pandora-Unity-SDK/UE_SDK 预留扩展方法
     * 示例: await GameletAPI.gameCustomFunction("Common.IsProductEnvironment")
     */
    gameCustomFunction(functionName: string, ...args: any[]): Promise<any>;
    /**
     * [for GameletSDK] 仅允许GameletSDK使用, 根据 Appid 获取资源路径 (只支持在前置虚拟机中使用)
     * @returns
     */
    getResourcePath(): string;
    /**
     * [for PxIDE][for PandoraUnitySDK][for GameletSDK] 扩展方法, 仅当多个活动存在一个页面下时才允许调用,如不确定请咨询SDK同学
     * 在PxIDE和PandoraUnitySDK, GameletSDK中运行时允许用户通过本接口设置小应用环境.
     * 在PxIDE中运行时, 建议设置所有的环境,包括appInfo中的所有值以及isProductEnvironment,以便faas请求能够从后台拉取到数据。
     * 在PandoraUnitySDK, GameletSDK中运行时,需要设置appInfo完整数据, 但不要设置 isProductEnvironment 环境信息
     *
     * @param appInfo 用户设置的app信息,结构如下
     * {
     *      appID:number,
     *      appName:string,
     *      appVersion:string,
     *      appKey:string
     * }
     * @param isProductEnvironment 选填,设置是否正式环境
     */
    setGameletAppEnv(appInfo: object, isProductEnvironment?: boolean): any;
    /**
     * -------------------------------------------------------
     * 模拟器(PxIDE/PxDEV)开发预留接口, 非模拟器运行时调用以下接口无效
     * -------------------------------------------------------
     */
    /**
     * [for PxIDE] 在PxIDE中运行时允许用户通过本接口设置userdata字段
     */
    setUserData(userdata: IUserdata): any;
}
export declare let GameletAPI: GameletAPIImpl;
export {};



/**
 * -------------------------------------------------------
 * 三方组件示例,请组件开发者填写以下内容
 * 组件名称:
 * 组件功能:
 * 联系人:
 * 版本:
 * -------------------------------------------------------
 */
declare class ThirdPartyImpl {
    /**
     * 方法请做好注释
     */
    method(): void;
}
/**
 * 单例化
 */
export declare let ThirdParty: ThirdPartyImpl;
export {};



/**
 * -------------------------------------------------------
 * 组件名称: DJCCookie
 * 组件功能: DJC cookie 控制插件
 * 联系人: v_rhfeng
 * 版本: 1.0
 * -------------------------------------------------------
 */
declare class GetCookieDJCImpl {
    url: string;
    skey: string;
    uin: string;
    isRequesting: boolean;
    /**
     * 通过链接获取skey和uin
     * 结果将通过GameletAPI.dispatchEvent接口返回'djc_cookie_refresh_result'消息,内容是JSON.stringify({ skey:this.skey, uin:this.uin })
     * @param url 传入链接,不同业务不同,传空字符串""时默认使用逆战端游业务的链接
     * @returns
     */
    refreshCookieDJC(url: string): Promise<void>;
}
/**
 * 单例化
 */
export declare let GetCookieDJC: GetCookieDJCImpl;
export {};



/**
 * -------------------------------------------------------
 * 组件名称: pluginsForActivityCenter
 * 组件功能: 活动中心控制插件
 * 联系人: jnjnjnzhang
 * 版本: 1.0
 * -------------------------------------------------------
 */
/**
 * 给活动中心导出的一些接口,目前只能在单独适配过或者1.5.1版本后的JS-SDK中使用
 */
declare class pluginsForActivityCenterImpl {
    /**
     * 获取小应用资源目录
     */
    getArchivePath(): Promise<string>;
    /**
     * 读取文件到ArrayBuffer
     * @param path 文件路径
     * @returns 文件内容
     */
    loadFileToArrayBuffer(path: string): Promise<ArrayBuffer>;
    /**
     * 将一个ArrayBuffer保存到文件
     * @param path 文件路径
     * @param arrayBuffer 保存的arrayBuffer
     */
    saveArrayBufferToFile(path: string, arrayBuffer: ArrayBuffer): Promise<boolean>;
    /**
     * 将一个文件加载到string
     * @param path 文件路径
     * @returns 文件内容
     */
    loadFileToString(path: string): Promise<string>;
    /**
     * 将一个string保存到文件
     * @param path 文件路径
     * @param str 保存的string
     */
    saveStringToFile(path: string, str: string): Promise<boolean>;
}
/**
 * 单例化
 */
export declare let pluginsForActivityCenter: pluginsForActivityCenterImpl;
export {};


评论