开发者自渲染广告
简介:
前文介绍的Banner广告、插屏广告等,app会“收到”一个完整的view对象,开发者无法自定义广告view内部的组件布局(文字TextView、图片ImageView),而原生广告自渲染方式支持开发者自由拼合这些素材,最大程度的满足开发需求;与原生广告(模板方式)相比,自渲染方式更加自由灵活,开发者可以使用其为开发者的应用打造自定义的布局样式。
适用场景:
原生广告(模板方式)不能满足开发需求,可以使用自渲染
包含内容:
使用自渲染 API拉取到的广告数据主要包含如下字段:
- 广告App图标(URL)
- 广告媒体图(URL)
- 广告标题
- 广告描述
除此之外,开发者还可以获取到广告类型,广告星级,广告价格等内容,详见自下文主要API介绍
主要 API
函数接口列表
方法名 |
方法介绍 |
备注 |
NativeUnifiedAd(string placementId,INativeUnifiedAdListener listener) |
构造函数 |
|
void LoadData(int count) |
加载广告,count指定期望加载的广告数量 |
|
void SetDownloadAPPConfirmPolicy(int downloadAppConfirmPolicy) |
指定点击 APP 广告后是否展示二次确认,可选项包括 0(wifi 不展示,非 wifi 展示),2(所有情况不展示) |
在显示工信部弹窗时,该设置无效,工信部弹窗会替换二次确认的弹窗 |
void SetCategories(List categories) |
传入 app 内类目信息 |
测试性接口,不保证有效 |
void SetMinVideoDuration |
设置返回视频广告的最小视频时长(闭区间,可单独设置),单位:秒 |
此设置会影响广告填充,请谨慎设置 |
void SetMaxVideoDuration(int maxVideoDuration) |
设置返回视频广告的最大视频时长(闭区间,可单独设置),单位:秒,合法输入为:5<=maxVideoDuration<=61 |
此设置会影响广告填充,请谨慎设置 |
方法名 |
方法介绍 |
备注 |
NativeUnifiedAdData(AndroidJavaObject adData) |
构造方法,开发者不能调用 |
|
string GetTitle() |
获取广告标题,短文字 |
|
string GetDesc() |
获取广告描述,长文字 |
|
string GetIconUrl() |
获取 Icon 图片地址 |
string GetImgUrl() |
获取大图地址,使素材展示更完整,优化展示效果,建议通过调用bindImageViews由SDK来渲染图片,详细可参考BindImageViews方法使用说明和Demo实现 |
|
int GetAdPatternType() |
获取广告样式 |
List GetImgList() |
获取三小图的地址,使素材展示更完整,优化展示效果,建议通过{BindImageViews}交给sdk进行图片的填充和渲染 |
|
bool IsAppAd() |
判断是否为app广告 |
|
int GetECPM() |
获取本条广告实时的eCPM价格,单位是分 |
|
string GetECPMLevel() |
获取本条广告实时的eCMP价格层级标签,每个层级标签对应线下预定的eCPM价格范围,成功返回一个包含数字的字符串,比如“1”,无权限调用该接口或后台异常会返回空字符串 |
|
int GetAppStatus() |
获取应用状态,0:未开始下载;1:已安装;2:需要更新;4:下载中;8:下载完成;16:下载失败;32:下载暂停;64:下载删除 |
|
int GetProgress() |
获取app类广告的apk文件下载进度 |
|
long GetDownloadCount() |
获取app类广告的下载次数 |
|
int GetAppScore() |
获取app类广告的应用评分 |
|
double GetAppPrice() |
获取app类广告的应用价格 |
|
int GetVideoDuration() |
获取广告的视频时长,广告加载成功即可获取,单位ms。注意:虽然此数值单位为ms,但实际精度为s(向上取整),例如视频真实时长 8100ms ,此处返回9000ms |
|
int GetPictureWidth() |
获取大图素材的宽度 |
|
int GetPictureHeight() |
获取大图素材的高度 |
|
int GetVideoCurrentPosition() |
获取视频广告当前已播放时长,单位是毫秒 |
|
void SetNativeAdEventListener(INativeAdEventListener listener) |
设置广告点击曝光等事件监听者 |
|
void NegativeFeedback() |
上报广告负反馈信息 |
|
void PreloadVideo(INativeVideoPreloadListener listener) |
预加载视频素材,在onVideoCached()回调后展示视频广告不会有加载进度条。 |
|
bool EqualsAdData(NativeUnifiedAdData nativeAdData) |
比较两条广告素材(大图小图等字段)是否相同 |
|
bool IsValid() |
广告是否有效,无效广告将无法展示 |
|
void BindAdToView(object context, object container, object adLogoParams, List |
View和广告的绑定,必须设置NativeAdContainer;adlogoParams建议传null,除非一定要改变广告标志相关参数;clickViews为触发广告点击行为的View,必须在container中,不然不会响应点击事件,且开发者不能对clickViews设置OnClickListener,会影响点击事件的上报,点击事件回调可通过NativeADEventListener中onADClicked()回调监听 |
container必须为NativeAdContainer,可通过Utils.GetNativeAdContainer()获取 |
void BindAdToView(object context, object container, object adLogoParams, List |
View和广告的绑定,必须设置NativeAdContainer;adlogoParams建议传null,除非一定要改变广告标志相关参数;clickViews为触发广告点击行为的View,customClickViews点击可以直接下载或进入落地页,两者必须在container中,不然不会响应点击事件,且开发者不能对clickViews和customClickViews设置OnClickListener,会影响点击事件的上报,点击事件回调可通过NativeADEventListener中onADClicked()回调监听 |
container必须为NativeAdContainer,可通过Utils.GetNativeAdContainer()获取 |
void BindMediaView(object view, VideoOption videoOption, INativeAdMediaListener mediaListener) |
将该条广告数据和视频播放组件MediaView绑定 |
|
void BindCTAViews(List CTAViews) |
绑定响应营销组件(智能电话、外显表单)点击事件的view,注意:开发者不能对CTAViews设置OnClickListener,会影响点击事件的上报;点击事件回调可通过INativeAdEventListener中OnAdClicked()回调监听 |
|
void BindImageViews(List imageViews, byte[] defaultImageData) |
根据图文广告不同广告类型,将广告数据的图片URL和ImageView绑定并展示,详细参考Demo实现,支持设置默认图 |
|
void BindImageViews(List imageViews, int defaultImageRes) |
根据图文广告不同广告类型,将广告数据的图片URL和ImageView绑定并展示,详细参考Demo实现,支持设置默认图 |
|
string GetCTAText() |
通过该接口可以判断广告是否拥有营销组件能力,返回为空值时表示该广告无法响应营销组件点击事件;返回非空时,表示广告拥有营销组件能力,返回值代表SDK推荐开发者使用的文案,如“立即预约”、“电话咨询” |
|
void StartVideo() |
播放视频广告:如果当前未开始则开始播放,如果当前暂停则继续播放,如果当前是停止的则从头播放 |
该接口只对视频广告预览页有效,在点击视频广告后进入的详情页中调用无效 |
void PauseVideo() |
暂停视频广告的播放 |
该接口只对视频广告预览页有效,在点击视频广告后进入的详情页中调用无效 |
void ResumeVideo() |
继续播放被暂停的视频广告 |
该接口只对视频广告预览页有效,在点击视频广告后进入的详情页中调用无效 |
void StopVideo() |
停止视频广告播放 |
该接口只对视频广告预览页有效,在点击视频广告后进入的详情页中调用无效 |
void SetVideoMute(bool mute) |
视频广告播放过程中,设置其是否静音,mute为true时表示静音 |
该接口只对视频广告预览页有效,在点击视频广告后进入的详情页中调用无效 |
void Destroy() |
当开发者不再使用广告,释放View等相关的资源,且广告失效,不能再次使用 |
|
void PauseAppDownload() |
暂停下载正在下载中的应用 |
|
void ResumeAppDownload() |
继续下载被暂停下载的应用 |
|
bool IsWeChatCanvasAd() |
是否是微信原生页广告,只有加入白名单的应用支持该类型的广告,如果是该类型广告建议将广告容器中按钮的文案设置为“去微信看看” |
MiitInfo GetAppMiitInfo() |
获取app类广告的app信息,包含应用名称,开发者,版本,apk包大小,隐私政策,权限信息,返回值为MiitInfo数据类型,对于非app类广告返回值为null |
|
string GetButtonText() |
返回广告主在广告投放平台设置的按钮文案,如果没设置将返回默认文案:应用下载类广告返回“立即下载”;微信原生页广告返回"去微信看看";其它广告返回“查看详情” |
|
Dictionary GetExtraInfo() |
获取本条广告一些额外信息 |
方法名 |
方法介绍 |
备注 |
MiitInfo(AndroidJavaObject miitInfo) |
构造方法,开发者不能调用 |
string GetAppName() |
应用的名称 |
string GetAuthorName() |
应用开发者名称 |
string GetPackageSizeBytes() |
应用apk包的大小,单位byte |
string GetPermissionsUrl() |
应用权限信息url,请求该url会得到一个权限信息的json数据,参考自定义下载弹窗的中处理权限的格式 |
string GetPrivacyAgreement() |
应用隐私政策url,需要使用webview显示该url |
string GetVersionName() |
应用版本信息 |
回调函数列表
- 接口名称
INativeUnifiedAdListener
回调函数名 |
回调函数含义 |
备注 |
void OnAdLoaded(List adDataList) |
广告数据获取成功时回调 |
|
void OnNoAd(AdError adError) |
广告数据获取失败时回调 |
- 接口名称
INativeAdEventListener
回调函数名 |
回调函数含义 |
备注 |
void OnAdExposed() |
广告被曝光回调 |
|
void OnAdClicked() |
广告被点击回调 |
|
void OnAdError(AdError error) |
错误回调 |
|
void OnApkStatusChanged |
apk数据更新状态时的回调 |
- 接口名称
INativeAdMediaListener
回调函数名 |
回调函数含义 |
备注 |
void OnVideoInit() |
视频组件初始化 |
|
void OnVideoLoading() |
视频开始加载 |
|
void OnVideoLoaded(int videoDuration) |
视频加载完成,videoDuration为视频时长 |
|
void OnVideoReady() |
视频组件准备完成 |
|
void OnVideoStart() |
视频开始播放 |
|
void OnVideoPause() |
视频暂停 |
|
void OnVideoResume() |
视频继续播放 |
|
void OnVideoCompleted() |
视频播放完成 |
|
void OnVideoStop() |
视频播放停止 |
|
void OnVideoClicked() |
自渲染视频广告中,如果setEnableUserControl设置为true时,用户点击视频区域时将收到此回调 |
|
void OnVideoError(AdError error) |
视频播放报错 |
- 接口名称
INativeVideoPreloadListener
回调函数名 |
回调函数含义 |
备注 |
void OnVideoCached() |
视频下载完成,此时展示广告不会有加载进度条 |
|
void OnVideoCacheFailed(int errorNum, string msg) |
视频下载失败 |
接入代码示例
- 完整的接入代码示例可在
Assets/UnionDemo/NativeUnifiedAdExample
中找到
加载自渲染广告
- 在您需要加载广告的文件中引入
Tencent.GDT
命名空间
在加载广告的方法内,需要添加如下代码来对定义好的 NativeUnifiedAd 进行初始化
public void LoadRewardVideoAd(int count)
{
nativeUnifiedAd = new NativeUnifiedAd(Constants.nativeUnifiedPosId, new ExampleNativeUnifiedAdListener(this));
nativeUnifiedAd.LoadData(count);
}
展示自渲染视频广告
开发者对如何展示自渲染广告有充分自由度,可仿照demo采用安卓原生方式渲染,也可根据unity特性进行展示
在不展示自渲染广告时执行调试
在您加载广告的类中实现如下回调,处理自渲染广告加载失败的问题
public void OnNoAd(AdError adError)
{
}
- AdError - 您可在插件的
Assets/UnionSDK/Scripts/common/AdError
目录下查找该类的实现
说明
- 在 Constants.cs 文件中替换您的 AppId 和 PlacementId