# 激励插屏广告

激励插屏广告与激励视频类似,也是一种激励广告。与激励视频不同的是,用户无需自行选择,也可以展示激励插屏广告。

激励插屏广告的奖励一般是游戏内部的金币、能力值等,当用户完整的看完视频就可以获得。我们建议将激励插屏放置在用户已经参与应用内购买,或者正在寻求应用内的奖励,如完成一个游戏关卡或充值节点。

Mint Mediation激励插屏广告提供良好的激励体验,让用户的完整视频观看来获得虚拟的货币或奖励。本节介绍如何集成和应用激励插屏广告。 图片

WARNING

由于激励插屏需求较少,Mint Mediation SDK不会默认预加载激励插屏,需要在初始化时指定预加载激励插屏广告,下面代码展示了如何在初始化时指定预加载特定类型广告:

InitOptions initOptions = new InitOptions.Builder()
                .appKey("Your AppKey")
				.preloadAdTypes(MintAds.PRELOAD_AD_TYPE.REWARDED_INTERSTITIAL,
                    MintAds.PRELOAD_AD_TYPE.REWARDED_VIDEO,
                    MintAds.PRELOAD_AD_TYPE.INTERSTITIAL)
                .build();
        MintAds.init(initOptions, new InitCallback() {
            @Override
            public void onSuccess() {
                // 初始化成功时触发
            }

            @Override
            public void onError(Error error) {
                // 初始化失败时触发
            }
        });

WARNING

注意: 从Mint Mediation SDK 1.5.0.0 版本开始支持激励插屏广告;

# 步骤 1. 设置激励插屏回调Listener

SDK会触发一系列事件来通知应用程序激励插屏广告的活动,如广告库存状态、用户获得奖励等事件,开发者需要通过事件来获知广告是否准备好,以及是否需要给用户奖励。所以,设置和实现激励插屏回调Listener的接口方法,是使用激励插屏广告的必要操作。下面的代码片段演示了如何实现RewardedInterstitialListener 接口来接收和处理插屏广告事件。

激励插屏触发的所有事件都可以在下面代码中找到。

RewardedInterstitialAd.setAdListener(new RewardedInterstitialListener() {

	/**
	 * 激励插屏广告库存可用性变化
	 *
	 * @param available boolean
	 * True: 表示激励插屏广告当前可用,您可以使用RewardedInterstitialAd.showAd()展示激励插屏广告
	 * False: 表示激励插屏广告当前不可用
	 */
	@Override
    public void onRewardedInterstitialAdAvailabilityChanged(boolean available) {
        
    }

	/**
	 * 激励插屏广告展示成功
	 *
	 * @param scene 展示的广告场景
	 */
    @Override
    public void onRewardedInterstitialAdShowed(Scene scene) {
	    // 不要在展示时执行一些过重的任务,可以在激励插屏关闭后再执行
    }

	/**
	 * 激励插屏广告展示失败
	 */
    @Override
    public void onRewardedInterstitialAdShowFailed(Scene scene, Error error) {

    }

	/**
	 * 激励插屏广告关闭
	 */
    @Override
    public void onRewardedInterstitialAdClosed(Scene scene) {

    }

	/**
	 * 激励插屏广告点击
	 */
    @Override
    public void onRewardedInterstitialAdClicked(Scene scene) {

    }

	/**
	 * 激励插屏广告奖励用户
	 */
    @Override
    public void onRewardedInterstitialAdRewarded(Scene scene) {
	    // Here you can reward the user according to your in-app settings.
    }
})

WARNING

注意: onRewardedInterstitialAdShowFailed()回调中的Error参数包含失败的原因,参考错误码

# 步骤 2. 展示激励插屏广告

广告可用检查

Mint Mediation SDK 会自动加载广告进行广告库存的维护,您只需正确的完成SDK集成和初始化。通过实现RewardedInterstitialListener接口,应用程序将会收到广告可用性变化的事件通知,通过 onRewardedInterstitialAdAvailabilityChanged 接口的available参数获取到当前广告是否可用。

public void onRewardedInterstitialAdAvailabilityChanged(boolean available)

当然,您也可以通过直接调用isReady(String scene) 方法来检查广告库存状态,如下所示。

RewardedInterstitialAd.isReady(scene);

展示广告

一旦收到onRewardedInterstitialAdAvailabilityChanged 事件的true回调,您就可以调用showAd() 方法进行广告的展示。当然我们并不建议这么做,Availability事件只有在广告可用性发生变化的时候才会产生,这并不一定符合应用设计的广告场景,而且有可能造成频繁的甚至连续的广告展示,这会给用户产生困扰,影响应用的使用体验。您应该根据应用中的广告场景设计来选择广告展示时机。

// 您可以在广告可用的时候马上展示广告,但我们并不建议这么做
public void onRewardedInterstitialAdAvailabilityChanged(boolean available) {
	if(available) {
		RewardedInterstitialAd.showAd(scene);
   }
}

WARNING

在 onRewardedInterstitialAdAvailabilityChanged 回调中展示广告可能会导致不可预见的行为。一般情况您不应这么做,除非在某些特定的场景并且对showAd方法的调用进行了必要的限制。

如果您只是想在需要的情况下(应用设计的广告场景)进行广告展示,请先通过调用isReady() 方法检查广告是否可用,这是我们建议的方式:

// 您可以在任何需要的时候展示广告
if (RewardedInterstitialAd.isReady(scene)) {
  RewardedInterstitialAd.showAd(scene);
}

WARNING

注意: 当您成功的完成步骤2,意味着广告已经展示成功。如果您想展示另外的广告,只需重复步骤2进行展示即可,不需要手动调用loadAd方法进行广告加载。
如果您聚合了AdMob广告,您需要确保对isReady 和 showAd 方法的调用必须在主线程中进行。

频次和频率

您可以使用频次和频率控制来提升用户体验,它们可以控制指定时间范围内广告展示的次数。频次和频率的设置在前台的广告位设置中进行,我们提供基于scene的场景控制.

WARNING

重要提示! 为确保广告位被频次控制的情况下不会给用户展现激励的按钮,您务必在之前调用以下方法确认当前广告位场景是否达到了频次控制的限制。

RewardedInterstitialAd.isSceneCapped(scene);

# 步骤 3. 奖励用户

用户完整的看完广告视频后,SDK会触发onRewardedInterstitialAdRewarded 事件. 所以您的RewardedInterstitialListener 会收到该事件,然后就可以给用户进行奖励。

所以,请务必确保设置了listener并实现了onRewardedInterstitialAdRewarded 回调方法来处理用户奖励。

服务端回调

Mint Mediation SDK支持激励插屏广告的服务端回调,开发者需要设置一个私有的回调地址(Callback URL,如下图所示),并指定信息用于验证Mint Mediation向回调地址发送的激励回调,因此Mint Mediation需要在回调中带上这个验证信息。验证信息由开发者调用SDK的setExtId()方法写入,在产生激励的时候,SDK联系Mint Mediation服务器通知该设备获得奖励,并附带验证信息。Mint Mediation服务器验证后,再通过回调地址将奖励信息和验证信息发给开发者的服务器。由于用户设备不会直接向开发者服务器联系,该方法可以避免虚假的激励回调事件产生。

设置验证信息ExtId

如果您的激励插屏广告需要服务端的交互,需要调用setExtId方法来设置用户验证信息。该方法可以基于scene设置不同的验证信息,以区分不同场景广告,实现按场景的奖励分配。由于设置的ExtId将用于验证激励的过程,因此该方法必须在showAd展示广告之前调用。

RewardedInterstitialAd.setExtId("scene", "Your Ext Id");

WARNING

注意: 如果您已经使用了激励视频广告,并且调用了setExtId设置验证信息,您仍然需要对激励插屏广告单独设置验证信息ExtId。

配置激励插屏广告服务端回调地址

开发者需要在广告位的高级设置(Advanced settings)中设置激励插屏广告的服务端回调地址(Callback URL),如下图所示。 图片

回调地址格式

回调地址采用正则表达式格式,开发者可以设置自定义的变量名称,变量的值由ExtId写入。

http://yourendpoint.com?variable_name_you_define={content}

{content} – 验证信息,由开发者在SDK客户端设置的ExtId填入,用于验证激励的有效性。

完成!

现在您已经可以在应用中展示激励插屏广告了。

# 接下来

您可以根据我们的集成文档来聚合其他广告类型,或者测试您的集成: