Android の動画リワード実装

Unity LevelPlay 動画リワードは、ユーザー主導の広告ユニットで、アプリ内報酬と引き換えにフルスクリーン広告にエンゲージする機会をユーザーに提供し、ポジティブなユーザーエクスペリエンスを維持しながらエンゲージメントを強化します。

Before you start
  • ironSource SDK がアプリケーションに正しく実装されていることを確認してください。実装の概要はこちら
  • LevelPlay Initialization API を使用して SDK を初期化してください。
  • AdUnitID は LevelPlay ダッシュボードで確認できます。詳細はこちら
  • このドキュメントは SDK 8.5.0+ に対応するものです。レガシー動画リワード API (SDK 8.5.0 以前) のドキュメントはこちら

動画リワード広告オブジェクトを作成する

動画リワード広告オブジェクトの作成は、onInitSuccess コールバックを正常に受信した後に行う必要があります。

このオブジェクトは再利用可能なインスタンスで、セッション中に複数のロードと表示が可能です。作成されたインスタンスは、同一の広告ユニットのロードと表示に使用できます。

より高度な実装では、必要に応じて複数の動画リワード広告オブジェクトを作成することもできます。

LevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");
val mRewardedAd = LevelPlayRewardedAd("adUnitId")

動画リワードリスナーを実装する

LevelPlayRewardedAdListener を実装して、広告配信に関する情報を取得します。

  • 動画リワード広告のロード前にリスナーを設定することをお勧めします。
  • 各動画リワード広告にリスナー実装が必要であることに注意してください。
  • コールバックはメインスレッドで実行されます。
// Create the Rewarded ad object
LevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");
mRewardedAd.setListener(new LevelPlayRewardedAdListener() {
    @Override
    public void onAdLoaded(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was loaded successfully
    }
    @Override
    public void onAdLoadFailed(LevelPlayAdError levelPlayAdError) {
        // Ad load failed 
    }
    @Override
    public void onAdDisplayed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }

    @Override 
    public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {
        // Ad reward received 
    }
    @Override
    public void onAdDisplayFailed(LevelPlayAdError levelPlayAdError, LevelPlayAdInfo levelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    @Override
    public void onAdClicked(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    @Override
    public void onAdClosed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    @Override
    public void onAdInfoChanged(LevelPlayAdInfo levelPlayAdInfo) {
        // Called after the ad info is updated. Available when another Rewarded ad has loaded, and includes a higher CPM/Rate
        // Optional
    }
});
// Create the Rewarded ad object 
val mRewardedAd = LevelPlayRewardedAd("adUnitId")
mRewardedAd.setListener(object : LevelPlayRewardedAdListener {
    override fun onAdLoaded(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was loaded successfully
    }
    override fun onAdLoadFailed(levelPlayAdError: LevelPlayAdError) {
        // Ad load failed
    }
    override fun onAdDisplayed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }

    override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {
        // Ad reward received 
    }
    override fun onAdDisplayFailed(levelPlayAdError: LevelPlayAdError, levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    override fun onAdClicked(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    override fun onAdClosed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    override fun onAdInfoChanged(levelPlayAdInfo: LevelPlayAdInfo) {
        // Called after the ad info is updated. Available when another Rewarded ad has loaded, and includes a higher CPM/Rate
        // Optional
    }
})

LevelPlay Ad Info

Ad Info

LevelPlayAdInfo パラメーターはロードに成功した広告の情報を含んでいます。

利用可能なフィールドの詳細については、こちらをご覧ください。

動画リワード広告をロードする

動画リワード広告をロードするには、loadAd メソッドを呼びます。

mRewardedAd.loadAd();
mRewardedAd.loadAd()

動画リワード広告を表示する

LevelPlayRewardedAdListeneronAdLoaded コールバックを受信したら、動画リワード広告を表示します。

  • Activity を渡す必要があります。
  • プレースメントを使用している場合は、後述のようにプレースメント名を showAd API に渡します。
  • 広告がユーザーに正常に表示されたら、ロード手順を繰り返すことで別の広告をロードすることができます。
public void showRewardedAd() {
    // Check that ad is ready
    if (mRewardedAd.isAdReady()) {
        // Show ad
        mRewardedAd.showAd(this);
    }
}
fun showRewardedAd() {
    // Check that ad is ready
    if (mRewardedAd.isAdReady()) {
        // Show ad
        mRewardedAd.showAd(this)
    }
}

広告のアベイラビリティを確認する

表示の失敗を回避し、広告が正しく表示されることを確認するには、showAd API を呼ぶ前に次の API を使用することをお勧めします。

isAdReady – 広告が正常に読み込まれ、広告ユニットに対するキャップが設定されていない場合、または視聴回数が広告ユニットに対して設定されたキャップに達していない場合は true を返し、それ以外の場合は false を返します。

isPlacementCapped – 有効なプレースメントに対する視聴回数がキャップに達している場合は true を返します。プレースメント名が有効でない場合、キャップが設定されていない場合、または視聴回数がプレースメントに対して設定されたキャップに達していない場合、この API は false を返します。

// Check that ad is ready and that the placement is not capped 
if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    mRewardedAd.showAd(this, placementName);
}
// Check that ad is ready and that the placement is not capped
if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    mRewardedAd.showAd(this, placementName)
}

プレースメント

LevelPlay ダッシュボードで動画リワードのプレースメント、ペーシング、キャッピングをサポートしています。

動画リワード広告のプレースメントを設定している場合は、showAd メソッドを呼び出して、特定のプレースメントに対して動画リワード広告を配信します。

public void showRewardedAdWithPlacement() {
    // Check that ad is ready and that the placement is not capped 
    if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
        // Show ad with placement 
        mRewardedAd.showAd(this, placementName);
    }
}
fun showRewardedAdWithPlacement(placementName: String) {
    // Check that ad is ready and that the placement is not capped
    if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
        // Show ad with placement
        mRewardedAd.showAd(this, placementName)
    }
}

リワードを付与する

LevelPlay SDK は、ユーザーが正常にビデオ視聴を完了するたびに onAdRewarded を発火します。

onAdRewardedonAdClosed は非同期です。onAdClosed の後に onAdRewarded が発火された場合でも、リワードを付与するようにリスナーを設定してください。

@override
public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {
    // Implement logic to grant the reward to the user
    String name = reward.getName(); 
    int amount = reward.getAmount();
}
override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {
    // Implement logic to grant the reward to the user
    val name: String = reward.name 
    val amount: Int = reward.amount
}

動画リワード広告の実装例

public class RewardedAdActivity extends Activity implements LevelPlayRewardedAdListener {
    private LevelPlayRewardedAd mRewardedAd;
    void createRewardedAd() {
        mRewardedAd = new LevelPlayRewardedAd("adUnitId");
        mRewardedAd.setListener(this);
    }
    void loadRewardedAd() {
        // Load or reload the ad
        mRewardedAd.loadAd();
    }
    void showRewardedAd() {
        if(mRewardedAd.isAdReady()) {
    	      mRewardedAd.showAd(this);
        }
    }
    void showRewardedAd(@NonNull String placementName) {
        // Check that ad is ready and that the placement is not capped 
        if(mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
    	      mRewardedAd.showAd(this, placementName);
        }
    }
    // LevelPlayRewardedAdListener methods
    @Override
    public void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdLoadFailed(@NonNull LevelPlayAdError error) {}
    @Override
    public void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}
    @Override
    public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {}
}
class RewardedAdActivity : Activity(), LevelPlayRewardedAdListener {
    private lateinit var mRewardedAd: LevelPlayRewardedAd
    fun createRewardedAd() {
        mRewardedAd = LevelPlayRewardedAd("adUnitId")
        mRewardedAd.setListener(this)
    }
    fun loadRewardedAd() {
        mRewardedAd.loadAd()
    }
    fun showRewardedAd() {
        if (mRewardedAd.isAdReady()) {
            mRewardedAd.showAd(this)
        }
    }
    fun showRewardedAd(placementName: String) {
        // Check that ad is ready and that the placement is not capped 
        if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {
            mRewardedAd.showAd(this, placementName)
        }
    }
    // LevelPlayRewardedAdListener methods
    override fun onAdLoaded(adInfo: LevelPlayAdInfo) {}
    override fun onAdLoadFailed(error: LevelPlayAdError) {}
    override fun onAdInfoChanged(adInfo: LevelPlayAdInfo) {}
    override fun onAdDisplayed(adInfo: LevelPlayAdInfo) {}
    override fun onAdDisplayFailed(error: LevelPlayAdError, adInfo: LevelPlayAdInfo) {}
    override fun onAdClicked(adInfo: LevelPlayAdInfo) {}
    override fun onAdClosed(adInfo: LevelPlayAdInfo) {}
    override fun onAdRewarded(reward: LevelPlayReward, adInfo: LevelPlayAdInfo) {}
}

LevelPlay メディエーションデモアプリ

実装デモアプリでは、動画リワード広告ユニット API をアプリに実装する方法を確認できます。

Android デモアプリダウンロード

完了!
これで、アプリケーションで動画リワードを配信するように設定されました。Test Suite を使用してインテグレーションを確認します。


次のステップは?
インテグレーションガイドに従って、追加の広告ユニットを実装します。