/** * 激励视频广告关闭回调载荷数据接口 */ 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 加载完成的 Promise */ abstract load(): Promise; /** * 展示激励视频广告 * @returns Promise 展示完成的 Promise */ abstract show(): Promise; /** * 销毁激励视频广告实例 * 释放相关资源,销毁后需要重新创建实例 * @returns Promise 销毁完成的 Promise */ abstract destroy(): Promise; /** * 绑定广告关闭事件监听器 * 当用户点击广告关闭按钮或广告播放完成时触发 * @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 预加载完成的 Promise */ abstract preload(): Promise; } /** * 获取用户信息 */ 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; abstract login(): Promise; abstract checkSession(): Promise; } export interface IDownloadFile { errMsg: string; header: { [key: string]: string }; profile: {}; statusCode: number; tempFilePath: string; } export abstract class Media { abstract downloadFile(url: string): Promise; }