Files
bw-mini-app/src/platforms/core.ts
2025-09-03 15:57:27 +08:00

178 lines
3.9 KiB
TypeScript

/**
* 激励视频广告关闭回调载荷数据接口
*/
export interface RewardedVideoCloseCbPayload {
/** 视频是否播放完成 */
isEnded: boolean;
/** 奖励数量 */
count: number;
}
/**
* 激励视频广告关闭回调函数接口
*/
export interface RewardedVideoCloseCb {
(data: RewardedVideoCloseCbPayload): void;
}
/**
* 激励视频广告错误回调载荷数据接口
*/
export interface RewardedVideoErrorCbPayload {
/** 错误消息 */
errMsg: string;
/** 错误代码 */
errCode: string;
}
/**
* 激励视频广告错误回调函数接口
*/
export interface RewardedVideoErrorCb {
(data: RewardedVideoErrorCbPayload): void;
}
/**
* 激励视频广告加载回调函数接口
*/
export interface RewardedVideoLoadCb {
(): void;
}
/**
* 激励视频广告配置选项接口
*/
export interface RewardedVideoAdOptions {
/** 广告位 ID */
adUnitId: string;
}
/**
* 激励视频广告抽象基类
* 定义了跨平台激励视频广告的统一接口
*/
export abstract class RewardedVideoAd {
abstract canUse(): boolean;
/**
* 手动加载广告素材
* 当广告素材加载出现错误时,可以通过此方法手动重新加载
* @returns Promise<void> 加载完成的 Promise
*/
abstract load(): Promise<void>;
/**
* 展示激励视频广告
* @returns Promise<void> 展示完成的 Promise
*/
abstract show(): Promise<void>;
/**
* 销毁激励视频广告实例
* 释放相关资源,销毁后需要重新创建实例
* @returns Promise<void> 销毁完成的 Promise
*/
abstract destroy(): Promise<void>;
/**
* 绑定广告关闭事件监听器
* 当用户点击广告关闭按钮或广告播放完成时触发
* @param cb 关闭事件回调函数
*/
abstract onClose(cb: RewardedVideoCloseCb): void;
/**
* 解除绑定广告关闭事件监听器
* @param cb 需要移除的关闭事件回调函数
*/
abstract offClose(cb: RewardedVideoCloseCb): void;
/**
* 绑定广告错误事件监听器
* 当广告加载或播放出现错误时触发
* @param cb 错误事件回调函数
*/
abstract onError(cb: RewardedVideoErrorCb): void;
/**
* 解除绑定广告错误事件监听器
* @param cb 需要移除的错误事件回调函数
*/
abstract offError(cb: RewardedVideoErrorCb): void;
/**
* 绑定广告加载成功事件监听器
* 当广告素材加载完成时触发
* @param cb 加载成功事件回调函数
*/
abstract onLoad(cb: RewardedVideoLoadCb): void;
/**
* 解除绑定广告加载成功事件监听器
* @param cb 需要移除的加载成功事件回调函数
*/
abstract offLoad(cb: RewardedVideoLoadCb): void;
/**
* 获取广告是否准备就绪
* @returns boolean 广告是否可以播放
*/
abstract isReady(): boolean;
/**
* 预加载广告
* 在合适的时机预先加载广告,提高用户体验
* @returns Promise<void> 预加载完成的 Promise
*/
abstract preload(): Promise<void>;
}
/**
* 获取用户信息
*/
export interface IUserInfo {
avatarUrl: string;
city: string;
country: string;
gender: number;
language: string;
nickName: string;
province: string;
}
export interface IUserProfile {
userInfo: IUserInfo;
cloudId: string;
encryptedData: string;
errMsg: string;
iv: string;
rawData: string;
signature: string;
}
export interface ILogin {
anonymousCode: string;
code: string;
errMsg: string;
isLogin: boolean;
}
export interface ICheckSession {
errMsg: string;
}
export abstract class UserInfo {
abstract getUserProfile(): Promise<IUserProfile>;
abstract login(): Promise<ILogin>;
abstract checkSession(): Promise<ICheckSession>;
}
export interface IDownloadFile {
errMsg: string;
header: { [key: string]: string };
profile: {};
statusCode: number;
tempFilePath: string;
}
export abstract class Media {
abstract downloadFile(url: string): Promise<IDownloadFile>;
}