SDK相关的整理

This commit is contained in:
chen wei bo
2025-09-26 17:34:07 +08:00
parent ed525d9ed2
commit 361afaacf2
40 changed files with 713 additions and 4379 deletions
@@ -0,0 +1,45 @@
/**
* 定义广告能力接口,所有广告 SDK 必须实现
*
*/
import { ISDK } from "./ISDK";
export interface IAdSDK extends ISDK {
/**
* 展示激励视频广告
* @param cb 回调,用户看完广告后触发
*
* - 成功播放到结尾时触发回调 → 发放奖励
* - 中途关闭时一般不触发
*/
showRewardVideo(cb: (ok: boolean) => void): void;
/**
* 展示插屏广告(splash/interstitial
*
* - 一般在关卡切换/场景切换时调用
*/
showInterstitial(): void;
/**
* 展示 Banner 广告
*
* - 通常固定在屏幕底部或顶部
*/
showBanner(): void;
/**
* 隐藏 Banner 广告
*/
hideBanner(): void;
/**
* 主动拉起分享
* @param cb 分享成功后的回调(某些平台支持)
*
* - 分享到好友/群聊
* - 不同平台回调机制不同,有的平台不保证能检测到分享成功
*/
showShare(cb?: Function): void;
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "12cfc56c-d0fa-4010-88ae-ab5cdf69494a",
"files": [],
"subMetas": {},
"userData": {}
}
@@ -0,0 +1,30 @@
/**
* 分析统计 SDK 接口
*
* - 分析/统计 SDK 的通用接口
* - 用于事件上报(例如:友盟、Google Analytics、Mixpanel
* - 所有分析 SDK 都应该实现这些方法
*/
import { ISDK } from "./ISDK";
export interface IAnalyticsSDK extends ISDK {
/**
* 判断统计功能是否可用
* @returns {boolean} true 表示启用,false 表示禁用
*
* - 不同环境下可能有不同表现(如 Test 环境默认关闭)
* - SDK 初始化失败时也可能返回 false
*/
isAnalyticsEnabled(): boolean;
/**
* 上报事件
* @param eventName 事件名称
* @param value 事件参数(可选)
*
* - 常用于埋点上报,例如:关卡完成、按钮点击
* - 不同 SDK 内部实现方式可能不同(友盟、Firebase、GA)
*/
trackEvent(eventName: string, value?: any): void;
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "5273f505-c9c6-46bf-b0d9-af450515aafa",
"files": [],
"subMetas": {},
"userData": {}
}
@@ -0,0 +1,81 @@
/**
* 定义平台基础能力接口(登录、获取用户信息、权限检测)
*
*/
import { ISDK } from "./ISDK";
export interface IPlatformSDK extends ISDK {
/**
* 登录
* @param cb 登录完成后的回调,返回平台相关的登录结果(如 code)
*
* - 微信/抖音:返回临时 code,需要交给服务器换取 openid/session_key
* - Web 平台:可能返回一个模拟的 code
*/
login(cb?: Function): void;
/**
* 获取用户信息
* @param cb 回调,返回 { nickName, avatarUrl }
*
* - 有的平台需要用户授权才能拿到头像和昵称
* - 失败时可能触发授权按钮逻辑
*/
getUserInfo(cb: (info: { nickName: string; avatarUrl: string }) => void): void;
/**
* 检查平台权限
*
* 不同平台(微信 / 抖音 / 快手 / Web)对于用户隐私或接口调用,通常需要先申请权限。
* 例如:微信的 scope.userInfo(用户信息)、scope.record(录音)、scope.writePhotosAlbum(保存相册)。
*
* @param scope string
* 权限范围标识,不同平台有不同的 key,比如:
* - "scope.userInfo" 用户信息
* - "scope.record" 录音
* - "scope.writePhotosAlbum" 保存到相册
*
* @param cb (granted: boolean) => void
* 回调函数,返回布尔值:
* - true:表示用户已经授权该权限,可以直接使用相关 API
* - false:表示未授权,需要提示用户去设置或引导授权
*
*/
checkPermission(scope: string, cb: (granted: boolean) => void): void;
/**
* 复制文本到剪贴板
* @param text 要复制的文本
* @param cb 回调,true 表示复制成功,false 表示失败
*
* - Web 使用 navigator.clipboard
* - 微信使用 wx.setClipboardData
*/
copyToClipboard(text: string, cb?: Function): void;
/**
* 客服功能是否可用
* @returns booleantrue 表示支持
*
* - 微信:wx.openCustomerServiceConversation
* - Web / 其他平台:通常返回 false
*/
kefuSupport(): boolean;
/**
* 打开客服会话
*
* - 仅在支持客服的平台生效
*/
openKefu(): void;
/**
* 获取设备分辨率
* @returns { width, height }
*
* - Webwindow.innerWidth / window.innerHeight
* - 小游戏:wx.getWindowInfo()
*/
getWindowSize(): { width: number, height: number };
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "99996676-dd93-488c-8d43-c4e9f9f0527a",
"files": [],
"subMetas": {},
"userData": {}
}
+25
View File
@@ -0,0 +1,25 @@
/**
* 定义 SDK 的基础生命周期接口
*
*/
export interface ISDK {
/**
* 初始化 SDK
* @param cb 初始化完成后的回调
*
* - 通常在游戏启动时调用
* - 可执行一些准备动作(保持常亮、获取启动参数、初始化广告等)
*/
init(cb?: Function): void;
/**
* 销毁 SDK(可选实现)
*
* - 通常在游戏退出或切换场景时调用
* - 用于释放资源、注销事件监听、停止定时器等
* - 如果 SDK 不需要额外清理,可以不实现
*/
destroy?(): void;
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "6e61a536-2663-4ea0-a97f-0bf2b6450c51",
"files": [],
"subMetas": {},
"userData": {}
}
@@ -0,0 +1,48 @@
/**
* 定义钱包 SDK 的统一接口,用于封装不同平台的钱包接入逻辑(例如 Luffa、MetaMask、Phantom)。
*
*/
import { ISDK } from "./ISDK";
export interface IWalletSDK extends ISDK {
/**
* 连接钱包
*
* 触发钱包连接流程(如唤起 Luffa 钱包授权、MetaMask 插件弹窗)。
* 成功后返回钱包地址和可选的公钥。
*
* @param cb 回调函数
* - address: 钱包地址(字符串)
* - publicKey?: 钱包公钥(部分钱包可能返回,用于后续签名验证)
*/
connect(cb: (address: string, publicKey?: string) => void): void;
/**
* 断开钱包连接
*
* 清理当前钱包的会话信息(如地址、公钥、缓存的 session)。
* 调用后 getWalletAddress() 应返回 null。
*/
disconnect(): void;
/**
* 获取当前钱包地址
*
* 如果用户已连接钱包,则返回钱包地址。
* 如果尚未连接,则返回 null。
*/
getWalletAddress(): string | null;
//
signMessage(message: string, nonce: number, options?: any): Promise<any>;
//
buildTransaction(payload: any): Promise<any>;
//
signTransaction(rawData: any): Promise<any>;
//
sendTransaction(signedData: any): Promise<{ hash: string }>;
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "d691d1e1-187a-4010-862a-86e62444eae4",
"files": [],
"subMetas": {},
"userData": {}
}