export type IRewordAdConfig = { /** * 激励视频广告id - 必填 */ adUnitId: string; /** * 是否开启进度提醒。开启时广告文案为「再看 n 个xxx」,关闭时为「再看 1 个xxx」。其中 n 表示用户当前还需额外观看广告的次数 */ progressTip?: boolean | undefined; /** * - 再得广告的奖励文案,用户每看完一个广告都会展示,multiton 为 true 时必填。 * - 文案完整内容为「再看 1 个xxx」,其中 xxx 是 multitonRewardMsg 配置的文案内容,最大长度为 7, * - 文案内容根据 multitonRewardMsg 的配置按顺序展示。若 multitonRewardMsg 长度小于 multitonRewardTimes , * - 则后续的激励再得广告文案取 multitonRewardMsg 数组最后一个。 */ multitonRewardMsg?: Array | undefined; /** * 是否开启激励再得广告 */ multiton?: boolean | undefined; /** * 额外观看广告的次数,合法的数据范围为 1~4,multiton 为 true 时必填 */ multitonRewardTimes?: number | undefined; }; export type IRewordAdOther = { /** * 是否需要在超时情况下结束广告 - 自用参数,非tt API要求的参数 */ needEndOnTimeout?: boolean | undefined; /** * 是否绑定永远的错误事件 - 自用参数,非tt API要求的参数 */ foreverErrorBind?: boolean | undefined; }; export type InterstitialAdConfig = { /** * 单个广告单元的 id。可从「开放平台控制台-进入对应小程序-运营-商业化变现-广告管理」中获取 - 必填 */ adUnitId: string; /** * 场景值 - 自用参数 */ scene?: number | undefined; }; export type IExeCallbackArgs = { /** * 是否看完 */ isEnded: boolean; /** * 完整观看次数 */ count: number; /** * 广告场景 */ scene?: string; /** * 广告类型 1:激励视频 2:插屏 */ adTypeR?: 1 | 2; /** * 广告结束类型 */ end_type?: "finished" | "halfway"; }; export type CallbackCollection = { /** * 每次外部回调 */ always?: (ctx?: IExeCallbackArgs & { [key: string]: unknown; }) => void; /** * 完整看完广告外部回调 不管一个还是几个 */ finished?: (ctx?: IExeCallbackArgs & { [key: string]: unknown; }) => void; /** * 半途退出广告外部回调 */ halfway?: (ctx?: IExeCallbackArgs & { [key: string]: unknown; }) => void; /** * 取消广告外部回调 */ cancel?: () => void; /** * 展示广告外部回调 */ before?: (ctx?: { scene: number; }) => void; /** * 展示广告成功外部回调 */ success?: (ctx?: { scene: number; }) => void; /** * 计时回调 scene: 广告场景 frequency: 广告展示前间隔时间 time: 广告展示时前间戳 */ prelude?: (ctx?: { scene: number; frequency: number; time: number; }) => void; }; export type IAdOptionsOther = { /** * 场景值 - 自用参数,非tt API要求的参数 */ scene?: number | undefined; /** * 广告超时时间 单位ms - 自用参数,非tt API要求的参数 */ timeout?: number | undefined; /** * 重试次数 - 自用参数 ,非tt API要求的参数 */ retry: number; /** * 是否在超时情况下保留广告实例 - 自用参数,非tt API要求的参数 */ preservedOnTimeout: boolean; }; export type IAdOptions = IRewordAdConfig & IRewordAdOther & IAdOptionsOther; export type RecoveredInfo = { /** * 恢复重试次数 */ count: number; /** * 是否恢复重试 */ retry: boolean; /** * 恢复重试原因 */ message: string; }; export type IApiError = { /** * 错误信息 */ errMsg?: string; /** * 错误码 */ errorCode?: number; /** * 错误信息 */ message?: string; }; export type ITaskResult = { /** * 广告任务的唯一标识符 */ id: string; /** * 广告错误信息 */ apiError?: IApiError; /** * 广告任务后台恢复前台时预估重试次数的原因 */ recovered?: RecoveredInfo; /** * 广告场景 */ scene?: string; /** * 广告类型 1:激励视频 2:插屏 */ adTypeR?: 1 | 2; /** * 广告结束类型 */ end_type?: "finished" | "halfway"; /** * 是否看完广告 */ isEnded?: boolean; /** * 完整观看广告次数 */ count?: number; }; export type ICallbackArgs = IExeCallbackArgs; export type IConnection = { /** * 广告中途退出回调 */ onHalfway?: (args: ICallbackArgs & { [key: string]: unknown; }) => void; /** * 广告展示回调 */ onShow?: (args: { scene: number; }) => void; /** * 广告执行成功回调 */ onFinish?: (args: ICallbackArgs & { [key: string]: unknown; }) => void; /** * 广告执行成功回调 */ onAlways?: (args: ICallbackArgs & { [key: string]: unknown; }) => void; /** * 广告执行失败回调 */ onError?: (e: unknown) => void; }; export type IConstructArgs = { /** * 初始化标识 */ sign?: string; /** * 是否保留tt激励视频广告实例 */ preserveOnEnd?: boolean; /** * 是否需要在超时情况下结束广告 */ needEndOnTimeout?: boolean; /** * 是否需要在错误情况下查询剩余次数 */ lookUpRemainOnError?: boolean; /** * 激励视频参数 (可选) */ adConfig?: IRewordAdConfig | undefined; /** * 回调集合 */ collection?: IConnection | undefined; }; /** * 广告场景类型映射对象 */ export type SceneTypeMap = { readonly [x: number]: string; }; /** * 广告场景类型文本映射对象(反向映射) */ export type SceneTextMap = { readonly [K in SceneTypeMap[keyof SceneTypeMap]]: { [P in keyof SceneTypeMap]: SceneTypeMap[P] extends K ? P : never; }[keyof SceneTypeMap]; }; /** * 场景值枚举 可持续添加 */ export type RewardAdTriggerScene = keyof SceneTextMap; /** * 场景值枚举 可持续添加 */ export type RewardAdTriggerSceneType = keyof SceneTypeMap;