中文
登录
后可查看全部文档
开发测试/iOS集成文档/自渲染样式
自渲染样式
最近更新 2026-03-18 18:38:08

一、使用说明

  • 功能说明:您可自行定义广告布局样式和展示场景,自渲染Draw视频广告和自渲染信息流广告用法基本相同,不同点在于Draw视频信息流增加对视频支持暂停播放,设置播放incon的图标样式和大小的接口
  • 生效范围:自渲染信息流、自渲染Draw
    • 自渲染信息流:应在应用的内容流中与应用内容穿插展示,包含大图、小图、组图和视频等多种样式类型
    • 自渲染Draw:适合在竖版全屏视频流中使用,接入方可以控制视频暂停或继续播放,默认视频播放不可干预,视频广告相关配置可以在平台设置。竖版视频(宽高比16:9)
  • 使用权限: 已回收不再提供创建(仅支持历史创建代码位)
  • 渲染规范:开发者自渲染广告时,请按照以下穿山甲业务规范进行广告展示。未按照要求会根据业务规范处理甚至惩罚
  • 广告渲染必须包含哪些
    • 广告标题或描述
    • 广告创意素材,至少包含一张图片
    • 穿山甲平台logo
    • 广告标识
  • 可点区域,为避免误点,广告应与应用内容明确区分
    • 广告边框清晰可见
    • 广告周边应留出空白区域
    • 广告与应用内其他可点区域之间保持距离
  • 请勿遮挡、扭曲、模糊广告图片和内容
  • 有效的广告展示:展示超过20%像素,观看时间超过1s

二、请求广告

使用BUAdSlot创建广告请求参数,然后使用BUNativeAdsManager对象调用loadAdDataWithCount请求广告

BUNativeAd 类为加载广告的接口类,可以通过数据接口每次请求一个广告数据,并能协助 UIView 注册处理各种广告点击事件,设置delegate后可获取数据。rootViewController是必传参数,是弹出落地页广告ViewController的。

1. 使用示例

复制

2. 接口说明

  • BUNativeAdsManager

方法

说明

- (instancetype)initWithSlot:(BUAdSlot * _Nullable) slot

构建请求参数BUAdSlot,详见使用示例
ID:代码位id,NSString,必传
AdType:广告类型,BUAdSlotAdType,必传(信息流:BUAdSlotAdTypeFeed,Draw:BUAdSlotAdTypeDrawVideo)
position:广告位置,BUAdSlotPosition,必传(BUAdSlotPositionTop = 1, BUAdSlotPositionBottom = 2, BUAdSlotPositionFeed = 3, BUAdSlotPositionMiddle = 4, // 只供插屏广告使用 BUAdSlotPositionFullscreen = 5,)
imgSizeArray:一组图片尺寸 单位px,NSMutableArray<BUSize *>,可选
imgSize:图片尺寸 单位px,BUSize,可选参数
iconSize:logo尺寸 单位px,BUSize,可选参数
titleLengthLimit:标题最大长度限制,NSInteger,可选参数
descLengthLimit:描述最大长度限制,NSInteger,可选参数

- (void)loadAdDataWithCount:(NSInteger)count

请求广告数量为1到3条,一次请求不超过3个

三、展示广告

使用BUNativeAdsManager调用loadAdDataWithCount请求广告,并在接收到nativeAdDidLoad回调后获取广告元素并渲染广告样式,通过设置BUNativeAdsManagerDelegateBUVideoAdViewDelegateBUNativeAdDelegate代理,获取广告展示、点击等回调监听。

1. 接口说明

BUNativeAd类提供了原生广告的数据绑定、点击事件的上报,开发者可自行定义信息流广告展示形态与布局。

  • 绑定点击事件 registerContainer:开发者可以使用registerContainer:withClickableViews:clickableViews注册绑定点击的 View,包含图片、按钮等。
    • BUNativeAd注册view具体点击事件(跳转广告页,下载,打电话等等)行为由 SDK 控制。
    • 具体点击事件类型interactionType(BUInteractionType)来自BUNativeAd请求获得的数据data(BUMaterialMeta)

1、传入clickableViews不为空时,只有clickableViews 和视频区域可以响应点击进行转化

2、传入clickableViews为空时,默认整个广告可响应点击进行转化

方法

说明

- (void)registerContainer:(__kindof UIView *)containerView withClickableViews:(NSArray<__kindof UIView *> *_Nullable)clickableViews;

注册绑定点击的View
1. 在物料加载成功方法里获取相关广告信息赋值后,需调用 registerContainer:withClickableViews:clickableViews注册绑定点击的View并刷新数据源refreshData:。
2.每次获取物料信息后需要刷新调用refreshData:方法

  • 广告信息 BUMaterialMeta:广告数据的载体类 ,开发者在获取数据后可在属性 data(BUMaterialMeta)里面获取图片类广告的数据信息,如交互的广告类型、图片、广告logo、广告描述、标题等
  • 视频视图 BUVideoAdView:提供了 play、pause、currentPlayTime 等方法,开发者可用于在Draw信息流中实现划入屏幕自动播放,划出屏幕暂停,点击传入已播放时间用于续播等。
  • 相关视图类 BUNativeAdRelatedView:可以添加logo、广告标签、视频视图、不喜欢按钮等。如果需要添加广告logo、dislike按钮、视频视图等,请先初始化BUNativeAdRelatedView
  • 广告状态监听 BUNativeAdDelegate:可以监听广告加载是否成功及曝光等行为
  • 视频播放监听 BUVideoAdViewDelegate:可以监听视频播放状态及点击状态

分类

字段/方法定义

字段类型

说明

获取广告信息
BUMaterialMeta

interactionType

BUInteractionType

广告交互类型:
BUInteractionTypeCustorm = 0,BUInteractionTypeNO_INTERACTION = 1, // 纯广告展示
BUInteractionTypeURL = 2, // 使用浏览器打开网页
BUInteractionTypePage = 3, // 在app内打开网页
BUInteractionTypeDownload = 4, // 下载app
BUInteractionTypePhone = 5, // 打电话
BUInteractionTypeMessage = 6, // 发信息
BUInteractionTypeEmail = 7, // 发邮件
BUInteractionTypeVideoAdDetail = 8 // 视频广告详情页

imageAry

NSArray<BUImage *>

物料图片

icon

BUImage

logo标识

AdTitle

NSString

广告标题

AdDescription

NSString

广告描述

source

NSString

广告源

buttonText

NSString

文本按钮

imageMode

BUFeedADMode

信息流广告模式,仅使用于信息流广告,其他广告忽略此属性BUFeedADModeSmallImage = 2, //小图
BUFeedADModeLargeImage = 3, //大图
BUFeedADModeGroupImage = 4, //组图
BUFeedVideoAdModeImage = 5, // 视频广告

score

NSInteger

星级评级:评级标准1~5

commentNum

NSInteger

评论数

appSize

NSInteger

广告安装包大小,单位字节

videoDuration

NSInteger

视频时长

mediaExt

NSDictionary

透传参数

视频视图
BUVideoAdView

- (CGFloat)currentPlayTime;

CGFloat

获取播放进度(当前时间)方法

- (void)play;

void

播放方法

- (void)pause;

- (void)pause;

暂停方法

@property (nonatomic, weak, readwrite) UIViewController *rootViewController;

/

必传参数;设置rootViewController,广告跳转的载体,根视图控制器。

@property (nonatomic, assign) BOOL drawVideoClickEnable;

/

是否允许点击暂停视频,默认NO。仅用于Draw视频广告(沉浸式广告)

@property (nonatomic, strong, readwrite, nullable) BUMaterialMeta *materialMeta;

/

BUMaterialMeta广告数据的载体类,用于获取广告的所有属性

@property (nonatomic, assign) BOOL supportAutoPlay;

/

是否支持自动播放,视频广告的自定义模式,默认支持自动播放

playerPlayIncon: playInconSize:


自定义暂停按钮样式方法,设置CGSizeZero默认使用图片大小

相关视图类BUNativeAdRelatedView

dislikeButton

UIButton

dislike按钮,需主动添加视图,接受用户反馈,提高广告的准确性。

adLabel

UILabel

广告标签,需主动添加到视图中。

logoImageView

UIImageView

广告logo,需主动添加到视图中。

logoADImageView

UIImageView

广告logo+广告标识语,需主动添加到视图中。

videoAdView

BUVideoAdView

视频View,需主动添加到视图中。

refreshData:nativeAd

/

刷新数据回调方法;注意:添加logo、广告标签、视频视图、dislike按钮,每次获取物料信息后需要刷新调用-(void)refreshData:(BUNativeAd *)nativeAd 方法刷新对应的视图绑定的数据.

广告状态监听
BUNativeAdDelegate

nativeAdDidLoad

/

广告物料加载成功

nativeAd:didFailWithError

/

返回的错误码(error)说明详见链接。Link

nativeAdDidBecomeVisible

/

广告显示回调

nativeAdDidCloseOtherController: interactionType

/

此回调在广告跳转到其他控制器时,该控制器被关闭时调用
interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面

nativeAdDidClick:withView

/

除视频区域外,点击会响应此回调方法

nativeAd:dislikeWithReason

/

dislike按钮点击回调,需要在此回调方法中进行响应的数据处理

视频播放监听
BUVideoAdViewDelegate

videoAdView:didLoadFailWithError:videoAdView

/

播放失败时调用此方法;返回的错误码(error)详见链接。Link

videoAdView: stateDidChanged:

/

当videoAdView回放状态更改时调用此方法。playerState:更改后的状态

playerDidPlayFinish:

/

播放完成时调用此方法

videoAdViewDidClick:videoAdView

/

点击回调方法,点击视频区域会触发此回调方法

videoAdViewFinishViewDidClick:

/

此方法在单击videoAdView的finish视图时被调用

videoAdViewDidCloseOtherController: interactionType

/

:此回调在广告跳转到其他控制器时,该控制器被关闭时调用interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面

BUVideoAdView初始化示例

复制

BUVideoAdView视频视图示例

复制

四、Dislike 功能

功能简介:dislike 功能是用于收集用户负反馈来优化内容/广告推荐策略、提升用户体验的核心功能,不支持移除

  • 使用SDK内置dislike时,由SDK自己处理上报,开发者无需关注。
  • 如果当前dislike样式不满足自身项目需求,可参照BUDislike类自行实现dislike按钮样式,使用BUDislike类必须确保用户点击后调用接口 (didSelectedFilterWordWithReason) 将原因上报

支持范围:自渲染/模版 信息流、自渲染/模版 Banner、 Draw视频不支持Dislike逻辑

方法

说明

@property (nonatomic, copy, readonly) NSArray<BUDislikeWords *> *filterWords;

BUDislikeWords数组,如果[filterWords.options count] > 0可展示第二页

initWithNativeAd:

使用nativeAd初始化以获得filterWords返回BUDislike

didSelectedFilterWordWithReason:

1)在用户选择不喜欢的原因后调用此方法。(仅适用于使用 BUDislike.filterWords 的对象)
2)如果 [filterWords.options count]> 0 。不需要调用这个方法。
3)不能更改 BUDislike.filterWords ,filterWord必须是BUDislike中的一个,否则将被过滤。

nativeAd: adContainerViewDidRemoved:

信息流广告的强制关闭广告回调,需要媒体在此回调做关闭的相关处理避免页面布局异常

五、进阶功能

1. 接入闭环电商预算

1.1 背景及收益

抖音直播电商预算已成为巨量引擎最具竞争力的优势预算,这类预算的推广目标是抖音直播间,在广告表现形式上按直播拉流样式展示能提升CPM。因此在媒体自渲染的场景上,我们期望与媒体一起优化直播电商广告的样式,提升整体消耗。抖音直播电商预算已成为巨量引擎最具竞争力的优势预算,这类预算的推广目标是抖音直播间,在广告表现形式上按直播拉流样式展示能提升CPM。因此在媒体自渲染的场景上,我们期望与媒体一起优化直播电商广告的样式,提升整体消耗。

优化方案

方案概述

媒体要求

示意图(供参考)

样式优化


直播拉流&直播样式

当返回广告时,根据imagemode=166区分是否为直播拉流广告,如是:

  1. 适配直播拉流,即可展示直播实时画面
  2. 取主播名称/头像等字段做直播样式展示(字段获取不到可联系技术支持开通权限)


  1. 使用穿山甲sdk播放器
  2. 双端都支持直播拉流,iOS需68xx及以上


优惠券样式


当返回直播广告(pro_type为2)或短视频广告(pro_type为1)时,根据coupon.has_coupon(1 有优惠券,0无优惠券)区分是否带优惠券,如有获取优惠券金额等字段用作样式展示



新增软广位

软文


feed流/draw流场景,可以在原有代码位之外新开代码位,将这批代码位线下提供给BD配置只返回特定直播广告


  1. Android默认支持闭环saas,即用户观看直播间,下单等行为不需要外挑抖音,在媒体应用内完成闭环;
  2. 提供新增代码位的rit用于配置
  3. 在新增rit上:标注“来自抖音”,替代原本“广告”角标(如不标“来自抖音”,存在法务监管风险)


push

app内任意场景新增push卡片样式,作为特殊代码位,代码位的配置和展示逻辑同上(需标注“来自抖音”),请求时机媒体决定,一次拉取1条广告


1.5卡

feed流上新增1.5卡片样式,作为特殊代码位,代码位的配置和展示逻辑同上(需标注“来自抖音”)设置X个代码位、每个代码位每次拉取1条广告


1.2 字段获取方式

1.2.1 使用说明

iOS 7100及以上默认支持接入直播拉流预算,若存在以下两种情况可参考文档接入

  • 低于7100需参考文档手动接入直播拉流依赖库BUAdLive-Framework
  • 媒体自身有集成播放器相关的库(ttsdk,ffmpeg)导致冲突可参考文档接入自定义TTSDK版本

客户端竞价:以下字段均可从media_ext获取(当pro_type=2时,是闭环电商的直播预算;当pro_type=1时,是闭环电商的短视频预算),部分字段获取不到请联系TS开通对应权限

复制

服务端竞价:以下字段可从ext中的media_ext获取(当pro_type=2时,是闭环电商的直播预算;当pro_type=1时,是闭环电商的短视频预算)

接入文档:穿山甲后台-接入与测试-接入中心-广告变现-服务端竞价SDK接入说明)

1.2.2 接口说明

获取示例:

直播间信息:ad.mediaExt[@"live_room"]

商品信息:ad.mediaExt[@"product"]

券信息:ad.mediaExt[@"coupon"]

直播:

一级分类

字段含义

字段名

是否必传

字段格式

备注

直播间信息
live_room

主播头像 icon

avatar_url

必传

string


主播名称

author_nickname

必传

string


粉丝量

follower_count

必传

int64


在线观看人数

watch_count

必传

int64

在线观看人数较少,推荐用粉丝量

商品信息
product

商品图片

img_list

必传

[]string


商品名称

name

必传

string


商品展示价

effective_price

必传

int64

单位:元

商品展示价

effective_price_origin

必传

int64

单位:分

商品划线价(原价)

regular_price

非必传

int64

单位:元

商品划线价(原价)

regular_price_origin

非必传

int64

单位:分

商品分类

category

非必传

object


商品销量

sell_num

必传

int64


券信息
coupon

是否有券

has_coupon

有券时必传

bool


优惠券类型(26 - 满减券)

type

有券时必传

int64


优惠面额

amount

有券时必传

int64

单位:元

优惠券使用门槛

threshold

是满减券时会有

int64

单位:元

优惠券开始生效时间

start_time

有券时必传

string

生效时间和过期时间粒度较粗,可以采用固定文案 “领取后 30 分钟内有效”

优惠券过期时间

expire_time

有券时必传

string

短视频:

一级分类

字段含义

字段名

是否必传

字段格式

备注

店铺信息

店铺名称

shop_name

必传

string


商品信息
product

商品图片

image

必传

string


商品名称

name

必传

string


商品服务

service_text


string

“限时秒杀”

商品价格

market_price

必传

int64

单位:元

商品价格

market_price_origin

必传

int64

单位:分

商品最低价格

discount_price

非必传

int64

单位:元

商品最低价格

discount_price_origin

非必传

int64

单位:分

商品分类

category

必传

object


商品销量

sell_num

必传

int64


券信息
coupon

是否有券

has_coupon

有券时必传

bool


优惠券类型(26 - 满减券)

type

有券时必传

int64


优惠面额

amount

有券时必传

int64

单位:元

优惠券使用门槛

threshold

是满减券时会有

int64

单位:元

优惠券开始生效时间

start_time

有券时必传

string

生效时间和过期时间粒度较粗,可以采用固定文案 “领取后 30 分钟内有效”

优惠券过期时间

expire_time

有券时必传

string

1.2.3 返回样例

复制

1.3 接入调试

开发者可参考SDK预览工具定出直播拉流广告;

2. 信息流自渲染摇一摇功能说明

信息流自渲染流量已支持配置“摇一摇”的创意交互形式。完成配置后,用户在展示“摇一摇”样式的信息流广告上可以根据提示摇动手机触发交互,丰富用户体验。根据穿山甲在信息流模板渲染广告上的实验数据,增加摇一摇交互可对CPM提升27%+

2.1 使用方式

  • 开发者可自行在信息流自渲染代码位的创建页面 打开“创意交互形式-摇一摇”开关,无需单独申请权限。功能开启后,穿山甲sdk将识别用户的摇动交互并触发广告点击。
  • 同时,开发者需在信息流场景上新增“摇一摇”的广告展示样式,并支持“摇一摇”样式展示的流量通过指定穿山甲广告位请求广告

2.2 注意事项

  • 开发者需要在“摇一摇”交互展示的流量上才能配置开启该功能,否则用户在没有“摇一摇”相关提示时摇动手机也会触发广告点击和跳转,不符合监管合规要求。如您未按照监管合规要求执行,由此导致的不利后果由您自行承担。
  • 若摇一摇交互区域同时可被点击触发,提示文案建议配置为 “点击或摇一摇 跳转至详情页或第三方应用”。
  • 只有当摇一摇广告完整展示时,用户摇动才会触发点击。在一屏展示多个广告的场景,用户摇动后,仅离屏幕中心区域最近的单条广告会触发点击。
  • 当前版本不支持开发者自行配置“摇一摇”的起止时间。即,摇一摇样式的广告将全程展示摇一摇交互,期间用户按提示语摇动均触发广告点击和跳转。当广告view被隐藏时不会触发。

六、资源

自渲染信息流:详细接入可参照Demo中的BUDFeedViewController类,广告加载请求部分可参照loadNativeAds方法

自渲染Draw:接入方法可参照demoBUDDrawVideoViewController类进行相应的对接处理


本篇目录
联系我们