1. 加载广告
const atNativeAd = new ATNativeAd("your placement id");
atNativeAd.setAdListener({
onAdLoaded: (): void => { },
onAdLoadFailed: (adError: ATAdError): void => { }
onAdOtherStatus: (adInfo?: ATAdInfo | undefined): void => { }
});
atNativeAd.loadAd({
context: getContext(),
uiContext: this.getUIContext()
});
2. 展示广告
(1)先通过ATNative#getNativeAd()
获取广告对象NativeAd
const nativeAd = atNativeAd.getNativeAd();
if (!nativeAd) {
this.adMsg = "ad is not ready";
return;
}
nativeAd?.setNativeAdEventListener({
onAdShow: (adInfo: ATAdInfo): void => { },
onAdClose: (adInfo: ATAdInfo): void => { },
onAdClick: (adInfo: ATAdInfo): void => { },
onAdDislikeClick: (adInfo: ATAdInfo): void => { },
onAdVideoResume: (adInfo: ATAdInfo): void => { },
onAdVideoPause: (adInfo: ATAdInfo): void => { },
onAdVideoPlayStart: (adInfo: ATAdInfo): void => { },
onAdVideoPlayEnd: (adInfo: ATAdInfo): void => { },
onAdVideoPlayFailed: (adError: ATAdError, adInfo?: ATAdInfo | undefined): void => { }
})
(2)再通过NativeAd
的isNativeExpress
方法判断是自渲染还是模板渲染
if (nativeAd?.isNativeExpress()) {
// 模板渲染
...
} else {
// 自渲染
...
}
● 模板渲染
@Component
struct NativeAdPage {
build() {
...
BuildATNativeAdExpressView(nativeAd);
...
}
}
● 自渲染
通过
NativeAd
的getAdMaterial方法获取素材进行渲染,详情请参考Demo示例:NativeAdItemComponent。3. API说明
● ATNativeAd
原生广告的操作类,负责广告加载、监听、显示等。
方法 | 说明 |
ATNativeAd(placementId: string) | 广告的初始化方法 placementID:原生样式的广告位,通过后台创建开屏广告位获取的 |
setAdListener(listener: ATNativeAdLoadListener) | 设置广告位层级的广告监听回调 listener:广告位事件回调的接口类 |
loadAd(adLoadConfig?: ATNativeAdLoadConfig) | 发起广告加载 adLoadConfig:加载广告配置 |
getNativeAd(showConfig?: ATNativeAdShowConfig) | 获取广告对象,用于展示广告 |
isAdReady() | 判断当前广告位是否存在可展示的广告 返回值:true=存在可展示的广告,false=不存在可展示的广告 |
getAdCaches() | 查询当前广告位的所有缓存信息的ATAdInfo对象 |
getTopAdInfo() | 获取当前广告位优先级最高的广告缓存信息 ATAdInfo对象 |
● ATNativeAdLoadListener
广告位层级的广告事件回调
方法 | 说明 |
onAdLoaded: () | 广告加载成功回调 |
onAdLoadFailed: (adError: ATAdError) | 广告加载失败回调 |
● NativeAd
原生广告对象,用于展示广告
方法 | 说明 |
setNativeAdEventListener(listener: NativeAdEventListener) | 设置广告展示相关的事件监听回调 |
isNativeExpress() | 是否为模板渲染类型的广告 返回值:true=模板广告,false=自渲染广告 |
getAdMaterial() | 获取广告素材对象,仅自渲染广告支持 返回值:广告素材对象 |
● ATNativeAdEventListener
广告展示相关的事件监听回调
方法 | 说明 |
onAdShow: (adInfo: ATAdInfo) | 广告展示回调 |
onAdClose: (adInfo: ATAdInfo) | 广告关闭回调 |
onAdClick: (adInfo: ATAdInfo) | 广告点击回调 |
onAdDislikeClick: (adInfo: ATAdInfo) | 广告点击关闭回调 |
onAdVideoResume: (adInfo: ATAdInfo) | 广告继续播放回调 |
onAdVideoPause: (adInfo: ATAdInfo) | 广告暂停播放回调 |
onAdVideoPlayStart: (adInfo: ATAdInfo) | 广告开始播放回调 |
onAdVideoPlayEnd: (adInfo: ATAdInfo) | 广告播放结束回调 |
onAdVideoPlayFailed: (adError: ATAdError, adInfo?: ATAdInfo | undefined) | 广告播放失败回调 |
● ATNativeAdMaterial
自渲染广告返回的广告素材对象
方法 | 说明 |
getAdTitle() | 获取广告标题 |
getAdDesc() | 获取广告描述 |
getAdMainImageUrl() | 获取广告主图url |
getImageUrlList() | 获取图片列表-url |
getImageList() | 获取广告图片列表对象 |
getAdIconUrl() | 获取广告Icon |
getAdFrom() | 获取广告来源/赞助商 |
getAdChoiceUrl(choiceType?: ATAdChoiceType) | 获取广告角标 NORMAL = 0, GREY = 1 |
getAdMaterialType() | 获取素材类型 UNKNOWN = 0, VIDEO = 1, IMAGE = 2, LIVE = 3 |
getAdCallToActionText() | 获取广告按钮文案 |
getAdInteractionType() | 获取广告的交互类型 UNKNOWN = 0, DOWNLOAD = 1, H5 = 2 |
getAdAppInfo() | 获取广告应用相关的信息,比如隐私数据,应用名 |
getAdVideoInfo() | 获取视频相关信息 |
getUniqueKey() | 获取唯⼀标识,⽤于LazyForEach标识⼴告 |
getVisibleAreaRatios() | 获取可⻅区域监听数组 |
getVisibleAreaChangeListener() | 可⻅区域监听⽅法,⽤于SDK内部判断⻚⾯展示⽐例,处理⼴告曝光&视频播放等 |
getClickHandler() | 控件点击监听 |
注意事项
● 快手
如果有集成快手平台,需要调用以下广告曝光和广告点击的api。
广告曝光
⼴告曝光逻辑按照⻚⾯展示⽐例来计算,开发者需要在⾃渲染的⼴告组件上监听展示⽐例并且回调给SDK,示例:
// 添加可⻅区域监听,SDK内部处理曝光逻辑
.onVisibleAreaChange(this.itemInfo.nativeAd?.getVisibleAreaRatios(),
this.itemInfo.nativeAd?.getVisibleAreaChangeListener())
广告点击
⽬前SDK内部⽆法⾃动给开发者的UI组件添加点击事件,对于点击后需要触发转化的控件,需要⼿动添加点击事件
并且回调给SDK,示例:
.onClick((e: ClickEvent) => {
// 点击转化
this.itemInfo?.nativeAd?.getClickHandler()(getContext(this) as common.UIAbilityContext,
e)
})