
模板信息流场景应在应用的内容流中与应用内容穿插展示,支持图文和视频样式,不支持开发者自行对广告样式进行渲染,可直接调用SDK相关接口获取广告view去展示。开发者在穿山甲平台进行多模板、多尺寸的勾选。信息流广告应与应用内容穿插展示并明显区分,防止意外点击。
支持模板渲染和原生广告自渲染。
初始化广告创建器
构建广告请求参数AdSlot
接口 | 是否必填 | 类型 | 含义 |
setCodeId(codeId:string) | 是 | string | 您在平台上申请的代码位Id,9开头9位数字 |
setAdCount(adCount:number) | 否 | number | 加载广告数,最多不超过3个 |
setSupportRenderControl(true) | 否 | boolean | 在Feed原生渲染中是否支持模板信息流广告展示,平台可配置 |
.setAcceptSize(350, 300) | 是 | number | 广告UI size,默认单位vp |
开发者调用loadFeedAd加载广告后,在onFeedAdLoad方法中获取到CSJFeedAd对象后获取广告元素进行自渲染。
需要注意的是如果打开了支持模板样式开关 supportRenderControl(),需要通过设置模板加载成功监听器来确保广告可用,并调用render方法渲染广告;
展示原生自渲染广告
视频展示:展示视频广告时需要通过NodeContainer容器承载广告视频UI,其它部分包括标题,描述等需自定义渲染,详细代码见Demo的FeedNativeAdPage文件。
图片展示:展示图片广告时,可以通过getImageList(): ArrayList<CSJImage>|undefine获取图片,并自定义渲染;
注意:自定义图片类型需要通过图片对象本身CSJImage获取宽getWidth()高getHeight()。
方法 | 参数 | 说明 |
onFeedAdLoad(ads:ArrayList<CSJFeedAd> ) | ads:广告信息列表CSJFeedAd:信息流广告对象 | 广告基础信息加载完成,此方法是回调后是广告可调用展示的最早时机 |
onError(code: number, message: string) | code:错误码 | 若加载中出错,会回调此方法 |
方法 | 说明 |
getTitle() | 广告标题 |
getDescription() | 广告描述 |
getButtonText() | 广告创意按钮文案 |
getAppScore() | 广告app评分 |
getSource() | 广告来源 |
getInteractionType() | 原生广告交互类型,返回值为number类型:3跳落地页;4调起或下载。 |
getImageMode() | 原生广告图片模式 |
getComplianceInfo() | 应用下载相关合规信息 |
getDislikeDialog(): | 得到Dislike dialog |
getAdComponent() | 获取广告UI组件 |
getMediaExtraInfo() | 返回广告额外信息 |
render(context: UIContext) | 渲染模板广告,渲染成功后通过getAdComponent()可获取到渲染成功的广告 |
destroy() | 资源释放 |
getVideoDuration() | 获取视频播放时长 |
getAdViewWidth() | View宽 |
getAdViewHeight() | View高 |
getIcon() | 广告图标Image |
getVideoCoverImage() | 当为视频广告时,返回视频封面图对象 |
getAdLogo() | 获取穿山甲logo |
getAppCommentNum() | 广告app评论数 |
getImageList(): ArrayList<CSJImage>|undefined; | 返回图片列表 |
getFilterWords() | 获得Dislike相关信息,即获得负反馈词组 |
isExpressAd() | 判断是否为模板广告 |
setAdInteractionListener(listener: CSJAdInteractionListener) | 设置交互监听 |
setExpressRenderListener( listener:ExpressRenderListener) | 设置模板渲染回调监听 |
setDislikeCallback(callback: CSJDislikeInteractionCallback) | 设置dislike监听 |
setVideoAdListener(videoAdListener: CSJVideoAdListener) | 设置Video监听 |
onAdClick(clickType: number, eventClick: ClickEvent) | logo点击调用 |
getCustomizeVideo:CSJCustomizeVideo | undefined; | 获取自定义播放器。 |
registerViewForInteraction(rootAdComponentId: string, uiContext: UIContext, clickViewIds: CSJArrayList<string>, creativeViewIds: CSJArrayList<string>: void; | 注册点击计费事件和交互回调,参数说明@param rootAdComponentId: 广告布局根节点Id@param uiContext : 当前组件的上下文@param clickViewIds : 普通点击Id集合@param creativeViewIds: 创意点击Id集合 |
方法 | 说明 |
getAppName() | 获取App Name |
getAppVersion() | 获取应用版本 |
getDeveloperName() | 获取开发者名称 |
getPrivacyUrl() | 获取隐私协议 |
getPermissionsMap() | 获取权限名称及权限描述列表 |
getPermissionUrl() | 获取权限列表url |
getFunctionDescUrl() | 获取产品功能url |
方法 | 说明 |
getVideoUrl: () => string; | 自定义播放器获取视频播放地址 |
reportVideoStart: () => void; | 自定义播放器,上报视频第一帧出现的埋点 |
reportVideoPause: (current: number) => void; | 上报视频暂停埋点 |
reportVideoContinue: (current: number) => void; | 上报视频继续播放埋点 |
reportVideoFinish: () => void; | 上报视频正常播放结束埋点 |
reportVideoBreak: (current: number) => void; | 上报视频播放过程中被终止的埋点 |
reportVideoAutoStart: () => void; | 上报视频准备开始播放的埋点 |
reportVideoStartError: (errorCode: number, extra: number) => void; | 上报视频播放前错误 |
reportVideoError: (current: number, errorCode: number, extra: number) => void; | 上报视频播放中错误 |
方法名 | 说明 |
onShow() | dislike 弹窗show |
onSelected: (position: number, value: string, enforce: boolean) | Dislike 条目被选中 position:条目的indexvalue:条目的内容enforce:是否强制关闭广告 |
onCancel() | Dislike 弹窗取消; |
setCustomDislikeComponent(customDislikeBuilder: WrappedBuilder<[ fwList: Array<FilterWord>, onSelected: (filterPosition: number, filterName: string) => void, onOtherSuggestComment: (suggestionValue: string) => void, onUserSuggestDialogCancel: (commentValue: string) => void]>): void; | 自定义Dislike设置 |
通过registerViewForInteraction方法注册原生自渲染广告计费事件和交互事件,方法说明如下,其中CSJArrayList类为CSJ提供的集合容器继承自ArrayList;该容器主要作用是收集注册点击事件的UI组件Id;
注意:UI组件id在应用中必须保持唯一(华为鸿蒙官方要求)
registerViewForInteraction中不再提供CSJAdInteractionListener回调监听设置;请通过广告对象的setAdInteractionListener()方法设置。
注册案例:
在调用展示广告前,通过广告对象的setAdInteractionListener()方法创建广告交互监听器,用于实时获取广告展示状态。
接口 | 参数 | 含义 |
onAdShow(ad: CSJNativeAd) | ad:广告对象 | 广告展示 |
onAdClicked(ad: CSJNativeAd) | ad:广告对象 | 广告被用户点击普通区域回调,如标题,描述等 |
onAdCreativeClick(ad: CSJNativeAd) | ad:广告对象 | 广告被用户点击创意区域回调,如下载button |
在调用展示广告前,如果是视频类型广告,可以创建广告视频监听器,用于实时获取广告视频的播放状态。
接口 | 参数 | 含义 |
onVideoLoad() | 视频加载完成 | |
onVideoAdStartPlay() | 视频开始播放第一帧 | |
onVideoAdPaused() | 视频暂停播放 | |
onVideoAdContinuePlay() | 视频继续播放 | |
onProgressUpdate(current: number, duration: number) | current:当前播放进度, | 视频播放进度 |
onVideoAdComplete() | 视频播放完成 | |
onVideoError(errorCode: number, errorMsg: string) | errorCode:错误码, | 视频加载失败 |
常量名称 | 值 | 含义 |
IMAGE_MODE_SMALL_IMG | 2 | 单图 |
IMAGE_MODE_LARGE_IMG | 3 | 大图 |
IMAGE_MODE_GROUP_IMG | 4 | 组图 |
IMAGE_MODE_VERTICAL_IMG | 16 | 竖图 |
IMAGE_MODE_VIDEO | 5 | 横屏视频 |
IMAGE_MODE_VIDEO_VERTICAL | 15 | 竖屏视频 |
IMAGE_MODE_UNKNOWN | -1 | 未知 |
初始化广告创建器
构建广告请求参数AdSlot
接口 | 是否必填 | 类型 | 含义 |
setCodeId() | 是 | String | 您在平台上申请的代码位Id,以9开头9位数字 |
.setAcceptSize(350, 300) | 是 | number | 广告UI size,默认单位vp |
在调用loadExpressFeedAd加载广告后,可在接收到onNativeExpressAdLoad回调后调用render渲染广告,渲染成功后方可展示。
展示广告时需要通过NodeContainer容器承载广告模板UI,详细代码见Demo的FeedExpressAdPage文件,广告加载成功之后并在展示之前,需要调用 ad.render(this.getUIContext())方法渲染广告,渲染成功后方可展示。
接口 | 参数 | 含义 |
onNativeExpressAdLoad: (ads: ArrayList<CSJNativeExpressAd>) | ads:广告信息列表CSJNativeExpressAd:信息流模板广告对 | 广告基础信息加载完成,此方法是回调后是广告可调用展示的最早时机 |
onError(code: number, message: string) | code:错误码 message:错误信息 | 若加载中出错,会回调此方法 |
方法名 | 说明 |
getInteractionType() | 原生广告交互类型,返回值为number类型:3跳落地页;4调起或下载。 |
getImageMode() | 原生广告样式模式:大图,组图,视频,三图,小图 |
getDislikeDialog() | 得到Dislike dialog |
getAdComponent() | 获取广告UI组件 |
getMediaExtraInfo() | 返回广告额外信息 |
render(context: UIContext) | 渲染模板广告,渲染成功后通过getAdComponent()可获取到渲染成功的广告 |
destroy() | 资源释放 |
getFilterWords() | 获得Dislike相关信息,即获得负反馈词组 |
setExpressInteractionListener(listener: ExpressAdInteractionListener) | 设置交互监听器 |
setDislikeCallback(callback: CSJDislikeInteractionCallback) | 设置dislike监听 |
setVideoAdListener(videoAdListener: ExpressVideoAdListener) | 设置Video监听 |
在调用展示广告前,创建广告交互监听器,用于实时获取广告展示状态。
接口 | 参数 | 含义 |
onAdShow(type: number) | type:广告交互类型 | 广告展示 |
onAdClicked(type: number) | type:广告交互类型 | 广告被用户点击回调 |
onRenderSuccess: (width: number, height: number) | width & height 广告宽高大小 | 在调用广告的render方法后,广告渲染成功,会回调该方法,此时表示广告已准备好,待展示 |
onRenderFail: (code: number, msg: string) | code:渲染错误码,msg:渲染错误信息 | 模板渲染失败 |
在调用展示广告前,如果是视频类型广告,可以创建广告视频监听器,用于实时获取广告视频的播放状态。
接口 | 参数 | 含义 |
onVideoLoad() | 视频加载完成 | |
onVideoAdStartPlay() | 视频开始播放第一帧 | |
onVideoAdPaused() | 视频暂停播放 | |
onVideoAdContinuePlay() | 视频继续播放 | |
onProgressUpdate(current: number, duration: number) | current:当前播放进度, | 视频播放进度 |
onVideoAdComplete() | 视频播放完成 | |
onVideoError(errorCode: number, errorMsg: string) | errorCode:错误码, | 视频加载失败 |
聚合功能通过mAdCreator.loadFeedAd API加载信息流广告,暂时不支持mAdCreator.loadExpressFeedAd,在调用加载广告后,可在CSJFeedAdListener的回调中继续处理相关回调。
加载广告
展示广告(原生自渲染广告需要注册计费事件) :
接口 | 返回值 | 含义 |
getMediationAdInfo() | object | undefined | 返回聚合相关信息 |
接口 | 返回值 | 含义 |
getAdnName() | string | 返回展示广告的adn名称 |
getAdnRitId() | string | 返回展示广告的adn代码位 |
getEcpm() | number | 返回展示广告的价格 |
getBiddingType() | number | 返回展示广告的竞价类型0为普通广告位,1 client竞价广告 2 server竞价广告 100 P层数据 |
getRitType() | string | 返回展示广告的广告类型"Banner" "Splash" "RewardVideo" "FullVideo" "Native" "Draw" "Interstitial" "InterstitialFull" |
CSJ模版信息流广告请参考demo中的adtype/feed/FeedExpressAdPage.ets接入示例。
在线客服智能客服 7*24小时在线人工客服 工作日 10~12点/14~19点