Skip to content

暂停卡 —— NovvyPauseAd ​

实时暂停卡(固定 260×90 逻辑像素),在播放器暂停时展示。无 load() 预加载、无 onAdLoaded —— 嵌入 <NovvyPauseAdView> 时实时发起请求。需宿主提供 NovvyPlayerAdapter 供 SDK 读取播放状态。

在「视频暂停那一刻」嵌入组件

嵌入会立即发起请求;恢复播放时 destroy(),下次暂停重新创建并嵌入。

VIDEO 素材的出声时机:卡片挂上即开播,比旧版提前约 1 秒。旧实现刻意把开播压到曝光判定之后, 原生 SDK 1.1.4 起「曝光」与「开播」解耦——曝光归可见性判据(见回调与曝光),开播只看卡片是否已挂载。 宿主无需改代码,但暂停卡的音频会比以前更早响起。

对接流程 ​

本集开始播放
        ↓
视频被暂停那一刻
        ↓
NovvyAds.setContentContext(...)
        ↓
嵌入 <NovvyPauseAdView>(视图就绪时自动 attach,实时请求)
        ↓
onAdShowed                                  // 卡片显示
        ↓
恢复播放  →  onAdHidden
        ↓
destroy()                                   // 需宿主主动释放

构造函数:new NovvyPauseAd(adUnitId: string)

类成员 ​

成员说明
onAdShowed() => void,暂停卡展示
onAdHidden() => void,卡片隐藏(播放恢复)
onAdFailedToLoad(error: string) => void,请求失败(无 onAdLoaded)
attach(player: NovvyPlayerAdapter)实时发起请求(通常由 <NovvyPauseAdView> 自动调用)。读取一次播放状态并随请求发送,之后每 500ms 推送状态以便 SDK 检测恢复播放
detach()停止推送并移除(通常由组件卸载时自动调用)
destroy()停止推送并释放原生实例
NovvyPauseAd.cardWidth / cardHeight260 / 90(逻辑像素,静态常量)
onShownChanged(shown: boolean) => void(内部使用):卡片显隐状态变化,组件据此切换触摸穿透 / 透明度

播放器适配器 ​

宿主需提供实现 NovvyPlayerAdapter 的对象桥接自有播放器(用 getter 保证每次读取到实时状态):

ts
const player: NovvyPlayerAdapter = {
  get currentPositionMs() { return videoRef.current?.positionMs ?? 0; },
  get isPlaying() { return videoRef.current?.isPlaying ?? false; },
};
成员类型说明
currentPositionMsnumber(只读)当前播放位置(毫秒)
isPlayingboolean(只读)是否正在播放(非暂停/缓冲)

<NovvyPauseAdView> 组件属性 ​

属性类型说明
adNovvyPauseAd广告实例(无 load 步骤)
playerNovvyPlayerAdapterSDK 监听以检测恢复播放的播放器适配器
styleStyleProp<ViewStyle>容器样式

示例 ​

tsx
const ad = useMemo(() => new NovvyPauseAd('your_ad_unit_id'), []);

useEffect(() => {
  ad.onAdShowed = () => { /* 暂停卡已展示 */ };
  ad.onAdHidden = () => ad.destroy();       // 恢复播放,释放
  ad.onAdFailedToLoad = (e) => { /* ... */ };
  return () => ad.destroy();
}, [ad]);

// 在视频暂停时嵌入(固定 260×90,自行在布局中定位):
<NovvyPauseAdView ad={ad} player={player} />

<NovvyPauseAdView> 固定为 260×90,请自行在布局中定位(如放入绝对定位的覆盖层)。组件在原生视图就绪时自动 attach、卸载时自动 detach。

事件回调 ​

回调触发时机
onAdFailedToLoad(error)请求失败(无 onAdLoaded —— 实时请求,无预加载阶段),error 取值见错误类型
onAdShowed卡片已挂载展示(不代表曝光已上报,见回调与曝光)
onAdHidden卡片隐藏(播放恢复)

回调统一在 JS 主线程 触发。

本文档仅供技术对接使用,请勿外传。