Skip to content

横幅 —— NovvyBannerAd ​

常驻的横幅广告位,按定时器轮播素材:只要组件挂载,SDK 就会一支接一支地填充,直到宿主 destroy()。

与其他类型有三处根本不同,对接前务必确认:

  1. 没有 load() —— 原生横幅在构造函数里就要拿到容器,而容器只有在平台视图创建后才存在,所以嵌入 NovvyBannerAdView 就是第一次请求。调用 load() 会通过 onAdFailedToLoad 报错。
  2. 回调按「轮」触发,不是按「广告实例」触发 —— 每隔 refreshIntervalSeconds 就会再来一次 onAdLoaded / onAdShowed。宿主若自行统计曝光,依赖的正是这种重复。
  3. onAdFailedToLoad 不是终态 —— SDK 会退避重试,且屏幕上已有的素材保持不动。广告实例不会被销毁,请把它当作警告而非结束;用完时由宿主自己调用 destroy()。

此外,横幅是唯一会把点击回传给宿主的类型(onAdClicked)。

对接流程 ​

NovvyAds.setContentContext(...)
        ↓
嵌入 NovvyBannerAdView(onPlatformViewCreated 时自动 attach,即发起首次请求)
        ↓
onAdLoaded  →  onAdShowed                   // 第 1 轮
        ↓
(用户点击)→ onAdClicked                    // SDK 已完成跳转与上报
        ↓
onAdLoaded  →  onAdShowed                   // 第 2 轮,refreshIntervalSeconds 后
        ↓
(某轮无货)→ onAdFailedToLoad               // 非终态:退避重试,当前素材不动
        ↓
组件卸载 → 自动 detach;destroy()            // 需宿主主动释放

尺寸档位 ​

5 档尺寸沿用 IAB 规格,单位为逻辑像素(Android dp / iOS pt)。各档长宽比互不相同:后端是按长宽比给素材的,档位选错会没有填充(而不是把素材拉伸)。

NovvyBannerSize尺寸(逻辑像素)说明
standard320 × 50经典手机横幅(默认值)
large320 × 100加高横幅
mediumRectangle300 × 250中矩形
fullBanner468 × 60全尺寸横幅
leaderboard728 × 90通栏

leaderboard 宽 728 逻辑像素,比任何手机都宽,直接放进竖屏布局会溢出。请套 FittedBox 缩放,或改用窄一些的档位。

类成员 ​

成员说明
onAdLoaded一支素材已就绪(每轮触发一次)
onAdShowed素材出现在位上、曝光上报完成(每轮触发一次)
onAdClicked用户点击了素材。触发时 SDK 已完成点击上报与跳转,此回调仅供宿主自己埋点
onAdHidden位上素材被清空(两轮之间渲染失败等)
onAdFailedToLoad请求失败,非终态(见上文第 3 点),error 取值见错误类型
sizeNovvyBannerSize,构造时传入,之后不可变(原生构造函数即固定尺寸;换档位需重建实例)
refreshIntervalSeconds轮播间隔秒数,默认 60。原生侧会钳制到 [30, 120];<= 0 表示关闭轮播,位上只留一支素材
attach()发起请求并启动轮播(通常由 NovvyBannerAdView 自动调用)
detach()停止轮播并从容器移除
pixelSizeSize,当前档位的逻辑像素尺寸
NovvyBannerAd.sizesInLogicalPixelsMap<NovvyBannerSize, Size>,上表的档位尺寸表
NovvyBannerAd.defaultRefreshIntervalSeconds60(与原生默认值一致)

示例 ​

dart
final ad = NovvyBannerAd(
  adUnitId: 'your_ad_unit_id',
  size: NovvyBannerSize.standard,        // 320×50
  refreshIntervalSeconds: 60,            // 钳制到 [30, 120]
);
ad.onAdShowed = () { /* 本轮素材已展示 */ };
ad.onAdClicked = () { /* 自行埋点;跳转已由 SDK 完成 */ };
// 非终态:不要在这里 destroy(),SDK 会退避重试
ad.onAdFailedToLoad = (e) { /* 记日志即可 */ };

// 挂载即发起请求:
NovvyBannerAdView(ad: ad)

// 页面回收时:
ad.destroy();

NovvyBannerAdView 固定为档位尺寸,请自行在布局中定位。组件在平台视图创建时自动 attach、卸载时自动 detach。

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