中文
登录
后可查看全部文档
GroMore/开发测试/GroMore Harmony集成文档/自定义Adapter
自定义Adapter
最近更新 2026-03-19 17:03:35

一、背景

通过自定义ADN方式快速集成融合SDK暂未支持的广告平台或对应功能,该文档基于6.9.0.0及以上版本给出相关示例说明。

二、实现方式示意图

自建聚合通过自定义ADN形式接入,适用于媒体通过自建聚合或者其他聚合方式对接到融合SDK中。

第三方ADN以自定义ADN形式接入,适用于第三方ADN直接对接到融合SDK中

三、平台侧配置

1. 添加自定义ADN广告网络

填写广告网络名称并指定该账户名称,对应类名。

2. 类命名

填写自定义广告平台各个广告类型的Adapter类名(您需要根据GroMore提供的接入规范自行实现自定义广告平台的Adapter类)

四、客户端侧配置

1. 工程配置

鸿蒙自定义adapter代码需要创建在一个新的模块内,并将文件在index.ets中导出,模块system为harTasks。

入口模块的oh-package.json5引入自定义adapter模块。

入口模块的build-profile.json5中runtimeOnly增加该模块引用。

2. SDK初始化

2.1 使用示例

自定义ADN必须要有配置类,在配置类中完成对应信息的采集,对应抽象类为CustomConfigAdapter,接口实现如下所示:新建CustomXXXConfigAdapter.ets文件,用于初始化adn。

复制

2.2 接口说明

方法

返回值

说明

是否必要

abstract initializeAdapter(initConfig: CustomAdnInfo, context: Context): void

-

聚合告知进行接入adn的初始化
initConfig 平台配置的adn相关信息

abstract networkSdkVersion(): string

接入adn的版本号

聚合获取接入的adn版本,开发者需在该方法中完成Adapter的初始化及对应network的初始化

3. SDK广告处理

3.1 使用示例

新建CustomXXXRewardedVideoAdapter.ets文件,用于接入adn激励视频。

复制
复制

3.2 接口说明

自定义广告adapter中需要实现的抽象类为CustomLoadAdapter,接口实现如下所示:

方法

说明

是否必要

abstract loadAd(adnRitId: string, loadBridge: CustomLoadListener, adSlot: AdSlot, params?: Map<string, Object>): void

聚合触发adapter请开始加载广告。

slotID: adn的代码位id;
adSlot:初始创造的广告入参对象;
params:额外信息,key值参考CustomDeliveryKey;
loadBridge:用于回传给聚合结果。

并在adn广告加载成功或失败调用loadBridge参数告知聚合,该对象为CustomLoadListener类型

方法

说明

是否必要

notifyLoadAdSuccess: (packAds: ArrayList<CustomPackAd>, ext?: Map<string, object>) => void

adn加载广告成功后,通知聚合加载成功,并将adn广告对象转换包装为CustomPackAd
激励/插屏/全屏/开屏 数组只需返回一个元素
信息流/draw/banner 数组可返回多个元素

notifyLoadAdFail: (code: number, message: string, ext?: Map<string, object>) => void

adn加载广告失败,通知聚合加载失败

notifyOnAdCached: (ext?: Map<string, object>) => void

adn加载cached完成,通知聚合

当adn广告加载成功时,需将adn的广告包装成CustomPackAd对象返回给Gromore

方法名

说明

是否必要

showAd(windowStage: window.WindowStage, params?: Map<string, object>): void

聚合调用-展示广告

和接入广告类型有关

setCustomInteractionListener(interactionBridge: CustomInteractionListener)

聚合调用-传递交互listener

getSplashAdComponent(hideCloseBtn: boolean, window?: window.Window): NodeController | undefined

聚合调用-获取开屏广告view

getMediaExtraInfo(): Map<string, object>

聚合调用-获取原生广告额外信息

setCustomVideoListener(videoBridge: CustomVideoListener)

聚合调用-传递Videolistener

setSlideIntervalTime(intervalTime: number): void

聚合调用-传递Banner广告轮播的间隔时间

getVideoCoverImage(): CSJImage | undefined

聚合调用-获取视频封面图对象

getAdLogo(): Resource | string

聚合调用-获取网盟logo

getTitle(): string

聚合调用-获取广告标题

getDescription(): string

聚合调用-获取广告描述

getButtonText(): string

聚合调用-获取广告创意按钮文案

getAppScore(): number

聚合调用-获取广告app评分

getAppCommentNum(): number

聚合调用-获取广告app评论数

getAppSize(): number

聚合调用-获取广告app大小

getSource(): string

聚合调用-获取广告来源

getIcon(): CSJImage | undefined

聚合调用-获取广告图标Image

getImageList(): ArrayList<CSJImage> | undefined

聚合调用-获取广告广告图片Image list

getInteractionType(): number

聚合调用-获取原生广告交互类型
2:在浏览器打开网页
3:在app中打开
4:下载应用
5:拨打电话
其它:未知类型

getImageMode(): number

聚合调用-获取原生广告图片模式
3 大图
2小图
4 组图
5 视频
其它:未知类型

getFilterWords(): ArrayList<FilterWord> | undefined

聚合调用-获取负反馈词组,获得Dislike相关信息

getComplianceInfo(): CSJComplianceInfo | undefined

聚合调用-获取应用下载相关信息

getAdComponent(): NodeController | undefined

聚合调用-获取广告组件UI(广告View)

onAdClick(clickType: number, eventClick: ClickEvent): void

聚合调用-触发广告点击

clickType : 普通点击或者创意点击
eventClick : 点击事件信息

getDislikeDialog(): CSJAdDislike | undefined

聚合调用-得到dislike dialog

setDislikeCallback(dislikeInteractionCallback: CSJDislikeInteractionCallback): void

聚合调用-传递原生模板广告中使用网盟中dislike

destroy(): void

聚合调用-资源释放

registerViewForInteraction(rootAdComponentId: string, uiContext: UIContext, clickViewIds: CSJArrayList<string>, creativeViewIds: CSJArrayList<string>): void

聚合调用-注册计费事件

rootAdComponentId: 广告布局根节点Id
uiContext : 当前组件的上下文
clickViewIds : 普通点击Id集合
creativeViewIds: 创意点击Id集合
customInteractionListener : 广告交互事件回调

render(context: UIContext): void

聚合调用-渲染模板广告

getVideoDuration(): number

聚合调用-获取视频时长

getAdViewWidth(): number

聚合调用-获取广告view的宽

getAdViewHeight(): number

聚合调用-获取广告view的高

getCustomizeVideo(): CSJCustomizeVideo | undefined

聚合调用-获取自定义播放器

setCanInterruptVideoPlay(canInterruptVideoPlay: boolean): void

聚合调用-传递设置是否允许视频区域响应点击,并且暂停/继续播放

canInterruptVideoPlay:true 可以点击, 默认为false

setPauseIcon(pauseIcon: PixelMap | ResourceStr, size: number): void

聚合调用-传递设置暂停图标和大小

size 单位为vp, 20 到 200之间,默认为 50

hasAdVideoCachedApi(): boolean

聚合调用-询问是否存在cache api

getReqId():string

获取广告reqId

public isReadyStatus(): ADReadyStatus


在adn产生展示后回调时通过interactionBridge告知聚合,该对象为CustomInteractionListener类型

方法

notifyOnAdShow: (ext?: Map<string, object>) => void

notifyOnAdSkip: (ext?: Map<string, object>) => void

notifyOnAdClick: (ext?: Map<string, object>) => void

notifyOnAdClose: (ext?: Map<string, object>) => void

notifyOnAdComplete: (ext?: Map<string, object>) => void

notifyOnAdRenderSuccess: (ext?: Map<string, object>) => void

notifyOnAdRenderFail: (code?: number, message?: string, ext?: Map<string, object>) => void

notifyOnAdPlayFail: (code?: number, message?: string, ext?: Map<string, object>) => void

notifyOnAdOnRewardArrived: (isVerify: boolean, rewardType?: REWARD_AWARD_TYPE, extraInfo?: object, ext?: Map<string, object>) => void

notifyOnAdCreativeClick: () => void;

在adn产生视频行为回调时通过videoBridge告知聚合,该对象为CustomVideoListener类型

方法

notifyOnVideoLoad: () => void

notifyOnVideoError: (errorCode: number, errorMsg: string) => void;

notifyOnVideoAdStartPlay: () => void;

notifyOnAdClose: (ext?: Map<string, object>) => void

notifyOnVideoAdPaused: () => void;

notifyOnVideoAdContinuePlay: () => void;

notifyOnVideoAdComplete: () => void;

notifyOnClickReplay: () => void;

【聚合】传递给【Adapter】params 中的 key 集合CustomDeliveryKey

取自

key

说明

value类型

loadAd

DELIVERY_LOAD_ORIGINTYPE

在平台配置的渲染类型 0-未填写;1-模版渲染;2-自渲染;3-广点通模版渲染2.0

number

loadAd

DELIVERY_LOAD_BIDDINGTYPE

代码位比价类型 0 普通广告位 1 client竞价广告 3 多阶底价 (重要)当为client竞价广告时,请回传【聚合】NOTIFY_BIDDINGECPM

number

loadAd

DELIVERY_LOAD_SPLASH_TIMEOUT

开屏广告加载超时时间

number

loadAd

DELIVERY_LOAD_SPLASH_CONTEXT

csj开屏预渲染的context

UIContext

showAd

DELIVERY_SPLASH_BOTTOM_VIEW

传入的开屏bottomViewBuilder

WrappedBuilder<[]>

showAd

DELIVERY_SPLASH_CUSTOM_CLOSE_BUTTON

传入的开屏CloseBtnBuilder

WrappedBuilder<[closeBlock: () => void]>

【Adapter】回传给【聚合】ext 中的 key 集合

带回

key

说明

value类型

notifyLoadAdSuccess

NOTIFY_BIDDINGECPM

当加载客户端比价代码位成功时,回传给聚合的价格

number

notifyLoadAdSuccess

NOTIFY_CREATIVE_ID

回传给聚合创意id

string

notifyLoadAdSuccess

NOTIFY_AD_ID

回传给聚合广告id

string

notifyLoadAdSuccess

NOTIFY_CORRECT_ISEXPRESS

校正渲染类型,当loadAd中平台配置的originType为0-未填写,回传给聚合真实渲染类型

bool,YES-模版渲染,NO-自渲染

notifyOnAdComplete

NOTIFY_SPLASH_CLOSETYPE

当开屏广告关闭时,回传给聚合关闭类型

CSJSplashAdCloseType

notifyOnAdRenderSuccess

NOTIFY_RENDER_WIDTH

渲染成功,回传给聚合返回view的宽 单位 vp

number

notifyOnAdRenderSuccess

NOTIFY_RENDER_HEIGHT

渲染成功,回传给聚合返回view的高 单位 vp

number

notifyOnAdRenderSuccess

NOTIFY_SUPPORTRENDER_ISEXPRESS

针对adn支持信息流/draw类型的自渲染转模版,回传给聚合最终是自渲染还是模版广告

bool


本篇目录
联系我们