Android の動画リワード実装
Unity LevelPlay 動画リワードは、ユーザー主導の広告ユニットで、アプリ内報酬と引き換えにフルスクリーン広告にエンゲージする機会をユーザーに提供し、ポジティブなユーザーエクスペリエンスを維持しながらエンゲージメントを強化します。
動画リワード広告オブジェクトを作成する
動画リワード広告オブジェクトの作成は、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
LevelPlayAdInfo パラメーターはロードに成功した広告の情報を含んでいます。
利用可能なフィールドの詳細については、こちらをご覧ください。
動画リワード広告をロードする
動画リワード広告をロードするには、loadAd メソッドを呼びます。
動画リワード広告を表示する
LevelPlayRewardedAdListener の onAdLoaded コールバックを受信したら、動画リワード広告を表示します。
- 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 を発火します。
onAdRewarded と onAdClosed は非同期です。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 をアプリに実装する方法を確認できます。
完了!
これで、アプリケーションで動画リワードを配信するように設定されました。Test Suite を使用してインテグレーションを確認します。
インテグレーションガイドに従って、追加の広告ユニットを実装します。