Skip to content

Novvy Ads Flutter Plugin ​

Flutter 端广告插件对接文档。当前版本 1.2.1。

从 1.1 升级

1.2 兼容 1.1:无需修改任何代码,把依赖版本号换成 ^1.2.1 即可。插件版本号独立递增(任一端原生升级都会带动插件发新版):当前 1.2.1 封装 iOS 原生 1.2.1 与 Android 原生 1.2.0,详见SDK 安装。

本插件是原生 Novvy Ads SDK(Android / iOS)的薄封装层:仅暴露 SDK 顶层入口(初始化 + 用户/内容上下文),广告本身通过各自的类创建和驱动。

接入顺序 ​

SDK 安装(pubspec 依赖)
        ↓
初始化 SDK(appId / endpoint / apiKey)
        ↓
设置用户与内容上下文        // 短剧场景是填充前提
        ↓
按广告类型接入(load → show / 嵌入组件)
  1. SDK 安装 —— 环境要求、pubspec.yaml 依赖
  2. 初始化 SDK —— NovvyAds.initialize() 参数与时机
  3. 用户与内容上下文 —— NovvyUserContext / NovvyContentContext
  4. 广告类型 —— 见下表
  5. 错误类型 —— onAdFailedToLoad 的错误字符串取值

NovvyAds 顶层入口 ​

NovvyAds 是一个只含静态方法的入口类,负责初始化与上下文管理。

方法说明
NovvyAds.initialize({required String appId, required String endpoint, required String apiKey, NovvyUserContext? userContext, void Function(bool)? onComplete})初始化 SDK,创建广告前必须调用。回调式,见初始化 SDK
NovvyAds.setUserContext(NovvyUserContext profile)替换整个用户画像(null 字段清空原值)
NovvyAds.updateUserContext(NovvyUserContext partial)按字段合并用户画像(null 字段保持原值)
NovvyAds.setContentContext(NovvyContentContext context)替换整个内容上下文(null 字段清空原值)
NovvyAds.updateContentContext(NovvyContentContext partial)按字段合并内容上下文(null 字段保持原值)

详见用户与内容上下文。

广告类型一览 ​

所有广告类继承自 NovvyAd,实例由宿主持有:保持引用直到广告结束(onAdDismissed / onAdHidden),随后调用 destroy()。

除暂停卡与横幅外,均为两段式 —— 先 load() 预加载,就绪(onAdLoaded)后再展示 / 挂载。暂停卡与横幅没有 load():嵌入组件即发起请求。

广告类型类形态展示方式生命周期回调
激励视频NovvyRewardedAd全屏show()onAdShowed → onUserEarnedReward → onAdDismissed
插屏NovvyInterstitialAd全屏show()onAdShowed → onAdDismissed
信息流滑动位NovvyScrollAd内联(信息流滑动位)NovvyScrollAdView 组件onAdShowed / onAdHidden / onAdPlaybackTick
中插NovvyMidAd全屏(中插)show()onAdShowed → onAdDismissed
片尾NovvyEndAd全屏(片尾)show()onAdShowed → onAdDismissed
暂停卡NovvyPauseAd内联(暂停卡,260×90)NovvyPauseAdView 组件onAdShowed / onAdHidden(实时,无预加载)
叙事植入NovvyInsertAd播放器视图内铺满(叙事植入)NovvyInsertAdView 组件,SDK 自动到点展示onAdLoaded / onAdShowed / onAdClosed(串行多支)→ onChainFinished
横幅NovvyBannerAd内联(横幅常驻位,5 档尺寸)NovvyBannerAdView 组件,嵌入即请求、自动轮播onAdLoaded / onAdShowed / onAdClicked / onAdHidden(每轮轮播各触发一次)

短剧场景务必先设置内容上下文

短剧后端需要「当前在看哪部剧、第几集」才有填充,否则无填充。请在每次 load() / 挂载之前调用 NovvyAds.setContentContext(...),详见用户与内容上下文。

NovvyAd 基类 ​

成员类型说明
adUnitIdString广告位标识(构造时传入)
adObjectIdString该广告实例的唯一 ID(内部生成)
isReadybool是否已加载就绪
onAdLoadedvoid Function()?加载成功回调
onAdFailedToLoadvoid Function(String error)?加载/请求失败回调,error 为错误描述字符串
load()Future<void>预加载。回调驱动:结果通过 onAdLoaded / onAdFailedToLoad 送达,不通过返回的 Future(可安全 fire-and-forget)。暂停卡不使用
destroy()Future<void>释放资源,幂等

错误处理

与 Android SDK 的密封类 NovvyError 不同,Flutter 侧 onAdFailedToLoad 直接回传 String 错误描述(无填充也走此回调)。可能的取值见错误类型。

回调与曝光 ​

每种广告通过在实例上赋值回调闭包接收事件。回调统一在主 isolate(UI 线程) 触发,各类型的回调表见对应广告类型页。

点击、曝光、跳转等追踪与计费由原生 SDK 内部自动处理,宿主无需干预。点击同样如此 —— 唯一例外是横幅:它在 SDK 处理完点击之后再调 onAdClicked,供宿主自己埋点。

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