开始之前
在开始集成激励视频广告之前,您需要先完成以下步骤:
- 在 OpenMediation 开发者前台页面,创建开发者账号,添加应用,然后申请并配置一个 ‘Rewarded Video’ 类型的广告位,操作手册在 这里。
- 在 Android SDK下载与集成 指导下,将 SDK 添加到您的开发项目并完成了 SDK 初始化操作。
- 如果要聚合第三方平台,您需要在完成本节的广告集成之后,参考 添加聚合网络 进行操作。
新版提示:全新2.0版本SDK的智能库存引擎自动加载广告,最简化集成开发工作!
在新版SDK中,开发者不需要调用loadAd方法进行激励视频、插屏广告和交叉推广广告的加载,智能库存引擎为您自动加载和缓存广告,通过初始化预加载、广告消耗补库存以及例行库存检查等机制,来确保库存中始终有广告可用。因此,新的SDK API接口会更加易于使用,在广告场景中可直接调用接口进行库存检查和广告展示;开发者可以更加关注于应用逻辑本身,而无需对广告的加载、缓存花费额外的精力。激励视频
激励视频具有强烈的互动性,已经成为移动广告行业的主流,它正在日益成为游戏开发者进行IAA变现的主要方式,越来越多的超休闲游戏开发者选择IAA而不是IAP。
激励视频广告的奖励一般是游戏内部的金币、能力值等,当用户完整的看完视频就可以获得。我们建议将激励视频放置在用户已经参与应用内购买,或者正在寻求应用内的奖励,如完成一个游戏关卡或充值节点。
OpenMediation 激励视频广告提供良好的激励体验,让用户的完整视频观看来获得虚拟的货币或奖励。本节介绍如何集成和应用激励视频广告。
激励视频触发的所有事件都可以在下面代码中找到。
import com.openmediation.sdk.utils.error.Error;
import com.openmediation.sdk.utils.model.Scene;
import com.openmediation.sdk.video.RewardedVideoAd;
import com.openmediation.sdk.video.RewardedVideoListener;
...
RewardedVideoAd.setAdListener(new RewardedVideoListener() {
/**
* Invoked when the ad availability status is changed.
*
* @param available is a boolean.
* True: means the rewarded videos is available and
* you can show the video by calling RewardedVideoAd.showAd().
* False: means no videos are available
*/
@Override
public void onRewardedVideoAvailabilityChanged(boolean available) {
// Change the rewarded video state according to availability in app.
// You could show ad right after it's was loaded here
}
/**
* Invoked when the RewardedVideo ad view has opened.
* Your activity will lose focus.
*/
@Override
public void onRewardedVideoAdShowed(Scene scene) {
// Do not perform heavy tasks till the video ad is going to be closed.
}
/**
* Invoked when the call to show a rewarded video has failed
* @param error contains the reason for the failure:
*/
@Override
public void onRewardedVideoAdShowFailed(Scene scene, Error error) {
// Video Ad show failed
}
/**
* Invoked when the user clicked on the RewardedVideo ad.
*/
@Override
public void onRewardedVideoAdClicked(Scene scene) {
// Video Ad is clicked
}
/**
* Invoked when the RewardedVideo ad is closed.
* Your activity will regain focus.
*/
@Override
public void onRewardedVideoAdClosed(Scene scene) {
// Video Ad Closed
}
/**
* Invoked when the RewardedVideo ad start to play.
* NOTE:You may not receive this callback on some AdNetworks.
*/
@Override
public void onRewardedVideoAdStarted(Scene scene) {
// Video Ad Started
}
/**
* Invoked when the RewardedVideo ad play end.
* NOTE:You may not receive this callback on some AdNetworks.
*/
@Override
public void onRewardedVideoAdEnded(Scene scene) {
// Video Ad play end
}
/**
* Invoked when the video is completed and the user should be rewarded.
* If using server-to-server callbacks you may ignore this events and wait
* for the callback from the OpenMediation server.
*/
@Override
public void onRewardedVideoAdRewarded(Scene scene) {
// Here you can reward the user according to your in-app settings.
}
});
注意:
- onRewardedVideoAdShowFailed()回调中的error参数包含失败的原因信息,具体可以参考 Error Code 获取更多错误信息和错误诊断。
- 回调方法中的Scene参数包含场景信息,该参数与调用showAd方法时传入的sceneName参数对应。Scene对应app中广告展示的场景,请通过开发者前台的广告位页面进行配置,根据实际应用中的广告场景添加Scene,如下图所示。
Step 2. 展示激励视频广告
检查广告可用
OpenMediation SDK 会自动加载广告进行广告库存的维护,您只需正确的完成SDK集成和初始化。通过实现RewardedVideoListener接口,应用程序将会收到广告可用性变化的事件通知,通过 onRewardedVideoAvailabilityChanged 接口的available参数获取到当前广告是否可用。
public void onRewardedVideoAvailabilityChanged(boolean available)
当然,您也可以通过直接调用isReady() 方法来检查广告库存状态,如下所示。
public boolean isReady()
展示广告
一旦收到onRewardedVideoAvailabilityChanged 事件的true回调,您就可以调用showAd() 方法进行广告的展示。sceneName参数来自开发者前台广告位配置中的Placement Scene Name列表,用于标记当前广告展示的场景和记录激励的位置(见上图)。
public void showAd(String sceneName)
注意:
- 如果sceneName参数为空或没有匹配上“开发者前台”配置的Scene Name,那么SDK会自动匹配到默认的Default_Scene,在事件回调中返回的Scene对象也是Default_Scene。
- Scene是引入的一个新概念,用于标记应用中广告位置或场景,支持频次控制、用户激励的场景区分和数据统计。可以在开发者前台进行Scenes配置。
- Scene是可选功能,若无需要可忽略该参数,系统会自动将广告匹配到默认的Default_Scene。
我们不建议在onRewardedVideoAvailabilityChanged回调直接展示广告,如下代码所示。Availability事件只有在广告可用性发生变化的时候才会产生,这并不一定符合应用设计的广告场景,而且有可能造成频繁的甚至连续的广告展示。这会给用户产生困扰,影响应用的使用体验。您应该根据应用中的广告场景设计来选择广告展示时机。
//if you would like to show ad right after it's was loaded
public void onRewardedVideoAvailabilityChanged(boolean available) {
if(available) {
RewardedVideoAd.showAd(sceneName)
}
}
警告!
- 在 onRewardedVideoAvailabilityChanged 回调中展示广告可能会导致不可预见的行为。一般情况您不应这么做,除非在某些特定的场景并且对showAd方法的调用进行了必要的限制。
如果您只是想在需要的情况下(应用设计的广告场景)进行广告展示,请先通过调用isReady() 方法检查广告是否可用,这是我们建议的方式:
//if you would like to show ad when it's required
if (RewardedVideoAd.isReady()) {
RewardedVideoAd.showAd(sceneName);
}
注意:
- 当您成功的完成步骤2,意味着广告已经展示成功。如果您想展示另外的广告,只需重复步骤2进行展示即可,不需要手动调用loadAd方法进行广告加载。
频次和步长
您可以使用频次和步长率控制来提升用户体验,它们可以控制指定时间范围内广告展示的次数。频次和步长的设置在前台的广告位设置中进行,我们提供基于广告场景(scene)的控制。
重要提示!为确保广告位被频次控制的情况下不会给用户展现激励广告的按钮,您务必在之前调用以下方法确认当前广告位场景是否达到了频次控制的限制。
RewardedVideoAd.isSceneCapped(sceneName);
Step 3. 奖励用户
用户完整的看完广告视频后,SDK会触发onRewardedVideoAdRewarded 事件. 所以您的RewardedVideoListener 会收到该事件,然后就可以给用户进行奖励。
注意:
请务必确保设置了listener并实现了onRewardedVideoAdRewarded 回调方法来处理用户奖励。不要仅依赖onRewardedVideoAdClosed 事件来处理奖励,onRewardedVideoAdRewarded 和onRewardedVideoAdClosed 事件是异步处理的。服务端回调
支持激励视频广告的服务端回调,开发者需要设置一个私有的回调地址(Callback URL,如下图所示),并指定信息用于验证 OpenMediation 向回调地址发送的激励回调,因此 OpenMediation 需要在回调中带上这个验证信息。验证信息由开发者调用SDK的setExtId()方法写入,在产生激励的时候,SDK联系OpenMediation 服务器通知该设备获得奖励,并附带验证信息。OpenMediation 服务器验证后,再通过回调地址将奖励信息和验证信息发给开发者的服务器。由于用户设备不会直接向开发者服务器联系,该方法可以避免虚假的激励回调事件产生。
验证信息ExtId
激励视频广告的服务端交互需要开发者调用setExtId方法来设置用户验证信息。由于设置的ExtId将用于验证激励的过程,因此该方法必须在showAd展示广告之前调用。该方法可以基于scene设置不同的验证信息,以区分不同场景广告,实现按场景的奖励分配。
RewardedVideoAd.setExtId(scene, "Your Ext Id");
配置激励视频广告服务端回调地址
开发者需要在广告位的高级设置(Advanced settings)中设置激励视频广告的服务端回调地址(Callback URL),如下图所示。
回调地址格式
http://yourendpoint.com?variable_name_you_define={content}
{content} - 验证信息,由开发者在SDK客户端设置的ExtId填入,并通过 OpenMediation 服务器传递给您的服务端回调接口,用于验证激励的有效性。
完成!
现在您已经可以在应用中展示激励视频广告了。
评论
文章评论已关闭。