English
Log In
You can then view all documents
GroMore/开发测试/GroMore iOS集成文档/GroMore iOS SDK接入文档/激励视频广告
激励视频广告
Last updated 2026-04-27 10:26:17

激励视频是一种全屏播放的视频广告,一般展示场景是用户需要游戏复活、解锁游戏关卡、获得享受应用中的某些功能时由用户选择观看激励视频广告并获得相应激励。

注意事项

  • 广告请求:
    • 需要确保在SDK初始化成功后再进行广告请求,否则可能导致广告请求加载失败。
    • 聚合SDK是通过广告位ID(一个广告位下包含多个代码位)发起广告请求的,切记不要使用混淆。
    • 在广告接入前需要明确各ADN对应聚合广告样式情况,以确保正确完成广告接入,避免由于广告类型不匹配导致接入报错等情况的发生。
    • 由于各广告平台对于包名校验规则不同,需确保在穿山甲媒体平台填写的包名符合各adn平台规范,避免由于包名校验不匹配导致的无广告返回情况的产生。
  • 广告展示:
    • 为了保证播放流畅,仅接入穿山甲广告不使用聚合功能的开发者建议在收到nativeExpressRewardedVideoAdDidDownLoadVideo:之后进行广告展示;使用聚合功能的开发者在收到nativeExpressRewardedVideoAdDidLoad:回调来展示广告,在展示前可通过isReady字段来判断当前广告是否可用。
    • 当广告无法展示时,建议在展示失败nativeExpressRewardedVideoAdDidShowFailed:回调内输出对应的error错误码明确展示失败的原因,如果是穿山甲广告触发此回调,可优先检查是否调整了系统时间导致触发此场景。
    • 如若针对展示失败有重试机制,建议只重试一次即可,避免无限重试引发死循环场景。
  • 广告监听:
    • 当展示失败/回调监听不执行时,建议检查是否有广告对象被覆盖或者被提前释放的场景导致,每次发起广告请求时,需要重新创建新的广告来调用广告请求方法。
  • 广告静音配置:由接口mutedIfCan控制,默认为NO,对GDT、Mintergral、快手生效。

一、创建广告对象及请求参数

1. 使用示例

支持一键复制实现融合基础功能实现,工具地址

详细接入可参照demo中的BUMDExpressRewardedVideoViewController类。

复制

2. 接口说明

  • BUNativeExpressRewardedVideoAd说明(参数配置)

方法

说明

@property (nonatomic, weak, nullable) id<BUNativeExpressRewardedVideoAdDelegate> delegate;

激励视频协议,聚合维度使用BUMNativeExpressRewardedVideoAdDelegate

@property (nonatomic, copy, readonly) BUDictionary *mediaExt;

媒体配置参数

@property (nonatomic, assign, readonly) BOOL materialMetaIsFromPreload;

默认是否此字段的值在下载成功后才准确聚合维度不支持此接口

- (instancetype)initWithSlotID:(NSString *)slotID rewardedVideoModel:(BURewardedVideoModel *)model;

创建广告对象参数

- (instancetype)initWithSlot:(BUAdSlot *)slot rewardedVideoModel:(BURewardedVideoModel *)model;

创建广告slot参数

- (NSString *)getAdCreativeToken;

物料ID聚合维度不支持

- (void)loadAdData;

加载广告

- (BOOL)showAdFromRootViewController:(UIViewController *)rootViewController;

广告展示回调

- (BOOL)showAdFromRootViewController:(UIViewController *)rootViewController ritScene:(BURitSceneType)ritSceneType ritSceneDescribe:(NSString *_Nullable)sceneDescirbe;


@property (nonatomic, strong, nullable, readonly) BUExpressRewardedVideoAdMediation *mediation;

当使用聚合广告位时,存在该属性,可获取聚合维度相关功能

二、广告展示及行为监听

1. 使用示例

复制

2. 接口说明

  • BUExpressRewardedVideoAdMediationProtocol说明(请求成功后可获取的信息)

方法

说明

@property (nonatomic, assign, readonly) BOOL isReady;

是否已经准备广告展示,理论上在广告加载回调后即为YES,但受一些因素的影响(例如广告失效),可能为NO。建议在广告展示前调用该方法进行是否可以展示

- (BUMRitInfo *)getShowEcpmInfo;

返回显示广告对应的披露信息

@property (nonatomic, assign, readonly) BOOL isLoading;

广告是否加载中

- (void)addParam:(id)param withKey:(NSString *)key;

添加参数param 参数值key 参数key

- (NSArray<BUMAdLoadInfo *> *)getAdLoadInfoList;

一次waterfall中各adn代码位加载广告失败原因,建议调用时机:展示广告时/超时时/全部返回报错时;返回nil表示一次加载无代码位加载失败或其加载无响应

  • BUNativeExpressRewardedVideoAdDelegate说明(广告行为监听接口)

方法

方法

- (void)nativeExpressRewardedVideoAdDidLoad:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

物料加载成功回调

- (void)nativeExpressRewardedVideoAd:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd didFailWithError:(NSError *_Nullable)error;

加载失败回调

- (void)nativeExpressRewardedVideoAdCallback:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd withType:(BUNativeExpressRewardedVideoAdType)nativeExpressVideoType;

聚合维度不支持此场景

- (void)nativeExpressRewardedVideoAdDidDownLoadVideo:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

当缓存成功时调用此方法。为了更好的用户体验,建议在这个时候显示视频广告。调用[BUNativeExpressRewardedVideoAd] showAdFromRootViewController:]

- (void)nativeExpressRewardedVideoAdViewRenderSuccess:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

渲染成功回调

- (void)nativeExpressRewardedVideoAdViewRenderFail:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd error:(NSError *_Nullable)error;

渲染失败回调

- (void)nativeExpressRewardedVideoAdWillVisible:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告即将展示

- (void)nativeExpressRewardedVideoAdDidVisible:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告已经展示

- (void)nativeExpressRewardedVideoAdWillClose:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告即将关闭

- (void)nativeExpressRewardedVideoAdDidClose:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告已经关闭

- (void)nativeExpressRewardedVideoAdDidClick:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告点击回调

- (void)nativeExpressRewardedVideoAdDidClickSkip:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd;

广告跳过回调

- (void)nativeExpressRewardedVideoAdDidPlayFinish:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd didFailWithError:(NSError *_Nullable)error;

广告播放完成回调

- (void)nativeExpressRewardedVideoAdServerRewardDidSucceed:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd verify:(BOOL)verify;

奖励验证回调

- (void)nativeExpressRewardedVideoAdServerRewardDidFail:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd error:(NSError *_Nullable)error;

奖励验证失败回调error:失败原因

- (void)nativeExpressRewardedVideoAdDidCloseOtherController:(BUNativeExpressRewardedVideoAd *)rewardedVideoAd interactionType:(BUInteractionType)interactionType;

此方法在另一个控制器关闭时调用。 interactionType:在app中打开appstore或打开网页或查看视频广告详情页面聚合维度不支持此场景。

三、获取竞价结果

注意事项:

  1. 获取时机:仅支持 show 后获取展示的ADN名称、代码位、ECPM;
  2. ECPM=0:通过getEcpm获取的单位是分,若ecpm为0可以确认 ① 获取时机:是否在展示之后获取;②兜底代码位:若本次展示的是兜底代码位,则getEcpm是0;
  3. 回传竞价结果:设置为adslot.mediation.bidNotify = YES后可触发didReceiveBidResult,开发者可在该方法中获取竞价结果、价格等信息。
复制

四、高级功能

1. 奖励配置说明

功能1:穿山甲激励广告增加「在广告中显示奖励内容」功能,根据开发者配置的奖励物品和数量,在激励视频广告播放过程中提示用户完成激励任务后将获取的奖励收益,以激发用户兴趣、观看更久更完整的视频广告,提升整体的CTR和收入。

功能2:若开发者使用的是Gromore的服务端奖励验证回调,请求广告时传入的奖励名称和数量会拼接在开发者在平台配置的奖励URL,开发者可根据回传的参数判断是否下发奖励

对比项

客户端奖励名称/数量设置

服务端奖励验证配置

配置位置

客户端代码(请求激励广告时设置rewardNamerewardAmount或穿山甲后台代码位创编页面配置

穿山甲平台广告位开启“服务端激励回调”并配置 URL 和密钥

作用对象

穿山甲用户界面展示(如挽留弹窗、奖励提示),激发用户兴趣,提高广告完整观看率及收益,受模版限制不是一定会展示

服务端奖励发放的合法性校验:当用户观看完激励视频并达到奖励条件时,服务端会将奖励名称和数量通过回调 URL 传递给开发者服务端,开发者服务端返回判断结果后,客户端会通过nativeExpressRewardedVideoAdServerRewardDidSucceed回调获取奖励名称和数量,用于实际奖励发放。

数据流向

客户端→穿山甲 SDK→广告展示页面

穿山甲服务端→开发者服务端→客户端回调

依赖条件

需开启“在广告中显示奖励内容”开关

需开启“需要服务器判断”并配置回调接口

优先级规则

接口传入 > 平台配置

服务端返回结果决定最终奖励是否发放

1.1 使用说明

若想使用此功能,需在创建激励视频代码位时配置开启“在广告中显示奖励内容”开关。开启后您设置的奖励物品名称、奖励数量会基于模版优选逻辑将有可能在广告播放过程中展示。开发者可以通过以下两种方案配置具体显示的奖励内容。

方案一:在穿山甲平台的代码位创编页面中里输入奖励名称和数量。

方案二:在请求广告构建BUNativeExpressRewardedVideoAd时,使用BURewardedVideoModel,传入奖励名称与奖励数量。

  • 若奖励名称和数量任一为空,则认为此对值无效。
  • 奖励数量为1~5个数字整数值,奖励内容为1~10个英文字符长度的字符串。

1.2 使用示例

  • 奖励物品名称“金币”,奖励数量“500”,广告挽留弹窗提示用户继续看完视频可领取“500金币”;奖励物品名称“分钟免广告”,奖励数量“60”,挽留弹窗显示继续观看xxs可领取奖励“60分钟免广告”。
  • 建议开发者配置/回传用户可真实获取的奖励内容,避免用户对奖励预期与获取产生出入。
  • 推荐开发者通过接口回传的形式,以便更灵活、动态地下发奖励,在用户粒度个性化优化收益。

在构建BUNativeExpressRewardedVideoAd时,使用BURewardedVideoModel,传入奖励名称与奖励数量。

复制

2. 服务端激励验证

对比项

广告位维度【强烈推荐】

代码位维度

配置位置

GroMore 平台的广告位层级(广告位 ID 以 1 开头),需在广告位编辑页面勾选「服务端激励回调」并填入回调 URL

具体 ADN(如穿山甲)的代码位层级(代码位 ID 以 9 开头),需在对应 ADN 平台的代码位设置中开启「服务端激励回调」并配置 URL,详细配置请移步聚合ADN说明:

穿山甲广点通、百度、快手sigmob

验证逻辑

GroMore 服务端接收 ADN 的奖励事件后,统一向开发者服务端发起回调,开发者返回验证结果后,GroMore 再将结果透传给客户端(如 onRewardArrived 回调)

ADN 服务端直接与开发者服务端交互,验证结果由 ADN 客户端回调返回(如穿山甲的 nativeExpressRewardedVideoAdServerRewardDidSucceed

回调链路

所有 ADN 的奖励验证通过 GroMore 中转,支持多 ADN 统一管理,回调链路涉及多个广告网络,开发者在 GroMore 广告位设置回调后,GroMore 服务端会向开发者服务端发送验证请求

各 ADN 独立处理验证流程,不经过 GroMore 中转,直接通过自身服务端向开发者服务端发送验证请求,开发者判断后返回结果,穿山甲客户端再回调给开发者

参数传递

包含更多扩展参数,如 ecpm、广告位 id、adn 的代码位 id 等

包含 sign、user_id、trans_id、reward_amount、reward_name、extra 等基本参数,不包含 ecpm 参数

注意事项

开启聚合维度服务端验证功能后,不要在第三方 ADN 重复配置这些代码位的服务端验证

开启聚合维度服务端验证功能后,不要在第三方 ADN 重复配置这些代码位的服务端验证

四、完整接入示例

复制

详细接入可参照demo中的BUMDExpressRewardedVideoViewController类。


Contents
Contact us