SDK相关的整理
This commit is contained in:
@@ -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 boolean,true 表示支持
|
||||
*
|
||||
* - 微信:wx.openCustomerServiceConversation
|
||||
* - Web / 其他平台:通常返回 false
|
||||
*/
|
||||
kefuSupport(): boolean;
|
||||
|
||||
/**
|
||||
* 打开客服会话
|
||||
*
|
||||
* - 仅在支持客服的平台生效
|
||||
*/
|
||||
openKefu(): void;
|
||||
|
||||
/**
|
||||
* 获取设备分辨率
|
||||
* @returns { width, height }
|
||||
*
|
||||
* - Web:window.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": {}
|
||||
}
|
||||
@@ -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": {}
|
||||
}
|
||||
Reference in New Issue
Block a user