Skip to content

暂停卡 —— NovvyPauseAd ​

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

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

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

对接流程 ​

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

类成员 ​

成员说明
onAdShowed暂停卡展示
onAdHidden卡片隐藏(播放恢复)
onAdFailedToLoad请求失败(无 onAdLoaded)
attach(NovvyPlayerAdapter player)实时发起请求(通常由 NovvyPauseAdView 自动调用)。读取一次播放状态并随请求发送,之后每 500ms 推送状态以便 SDK 检测恢复播放
detach()停止推送并移除
NovvyPauseAd.cardWidth / cardHeight260 / 90(逻辑像素)
NovvyPauseAd.viewType'ai.novvy.novvy_ads/pause_ad'(内部使用)
shownNotifierValueNotifier<bool>,组件据此切换触摸穿透(内部使用)

播放器适配器 ​

宿主需实现 NovvyPlayerAdapter 桥接自有播放器:

dart
class MyPlayerAdapter extends NovvyPlayerAdapter {
  final VideoPlayerController controller;
  MyPlayerAdapter(this.controller);

  @override
  int get currentPositionMs => controller.value.position.inMilliseconds;

  @override
  bool get isPlaying => controller.value.isPlaying;
}
成员类型说明
currentPositionMsint当前播放位置(毫秒)
isPlayingbool是否正在播放(非暂停/缓冲)

示例 ​

dart
final ad = NovvyPauseAd(adUnitId: 'your_ad_unit_id');
ad.onAdShowed = () { /* 暂停卡已展示 */ };
ad.onAdHidden = () { /* 隐藏(恢复播放) */ };
ad.onAdFailedToLoad = (e) { /* ... */ };

// 在视频暂停时嵌入:
NovvyPauseAdView(ad: ad, player: myPlayerAdapter)

// 恢复播放时释放:
ad.destroy();

NovvyPauseAdView 固定为 260×90,请自行在布局中定位(如放入 Stack / Align)。组件在平台视图创建时自动 attach、卸载时自动 detach。

事件回调 ​

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

回调统一在主 isolate(UI 线程) 触发。

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