Unityのリワード型広告単位APIへの移行
LevelPlay リワード広告単位 API に遷移するには、SDK の初期化、広告フォーマットの定義、リワード広告のロードと表示に広告単位 ID を使用します。
読み終わるまでの所要時間 10 分最終更新 6日前
このガイドでは、広告単位IDをウォーターフォール識別子として使用し、SDKバージョン9.0.0時点でLevelPlay APIを統合し、リワード広告をロードおよびディスプレイする方法について説明します。
LevelPlay プラットフォームで広告単位 ID を確認します。
リワード広告をロードおよびディスプレイするには、LevelPlay メディエーションプラットフォームで利用できる広告単位 ID を使用する必要があります。
- LevelPlay アカウントで、設定> 広告ユニット に操作します。
- リワード型広告単位IDをコピーし、コードに統合します。
LevelPlay SDK の初期化
LevelPlay SDK を初期化するには、以下の手順に従います。
- 初期化の成功と失敗のイベントを実装します。
- セッションで初期化する広告フォーマットのリストを定義します。これには、複数の広告単位ではない API を使用するすべての広告フォーマットを含める必要があります。
- appKey、広告フォーマット、およびユーザー ID (必要な場合) を使用して LevelPlay init API を呼び出します。
using Unity.Services.LevelPlay;// Init the SDK when implementing the Multiple Ad Units API for Interstitial, Banner, and RewardedLevelPlay.OnInitSuccess += SdkInitializationCompletedEvent;LevelPlay.OnInitFailed += SdkInitializationFailedEvent;LevelPlay.Init(appKey);
LevelPlay Init リスナー
OnInitSuccess: 初期化が正常に完了したときにトリガーされます。この通知を受け取ったら、広告を作成してロードできます。
OnInitFailed:設定が正常に取得されず、広告をロードできません。後で LevelPlay SDK を初期化してみることをお勧めします (インターネット接続が利用可能なとき、または失敗の理由が解決されたとき)。
コンポーネント | 古い機能 | 広告単位 (新規) |
|---|---|---|
| API | IronSource.init | LevelPlay.Init |
| イベント | onInitializationComplete | OnInitSuccess |
| N/A | N/A | OnInitFailed |
Rewarded Adオブジェクトの作成
リワード広告オブジェクトの作成は、OnInitSuccess コールバックを受信した後に実行する必要があります。
オブジェクトは、セッションを通じて複数のロードと表示をハンドルできる再利用可能なインスタンスです。作成後、同じ広告単位の広告をロードおよび表示するために使用します。
より高度な実装では、必要に応じて複数のリワード広告オブジェクトを作成できます。
非公開の LevelPlayRewardedAd 報酬型広告// Create rewarded AdrewardedAd = new LevelPlayRewardedAd(adUnitId);
リワードイベントに登録
作成したリワード型広告単位にリワード型リスナーを設定して、広告配信に関する情報を取得します。
- リワード広告をロードする前にリスナーを設定することをお勧めします。
- 各リワード広告には、独自のリスナー実装が必要です。
- コールバックはメインスレッドで実行されます。
非公開の LevelPlayRewardedAd 報酬型広告// Create rewarded AdrewardedAd = new LevelPlayRewardedAd(adUnitId);// Register to eventsrewardedAd.OnAdLoaded += OnAdLoaded;rewardedAd.OnAdLoadFailed += OnAdLoadFailed;rewardedAd.OnAdDisplayed += OnAdDisplayed;rewardedAd.OnAdDisplayFailed += OnAdDisplayFailed;rewardedAd.OnAdRewarded += OnAdRewarded;rewardedAd.OnAdClosed += OnAdClosed;// OptionalrewardedAd.OnAdClicked += OnAdClicked;rewardedAd.OnAdInfoChanged += OnAdInfoChanged;
LevelPlay リワード広告イベント
OnAdLoaded:広告が正常にロードされたときに提供されます。
OnAdLoadFailed:広告のロードに失敗したときに提供されます。広告単位情報が含まれます。
OnAdDisplayed:広告が表示されるときに提供されます。これはインプレッションに相当します。
OnAdDisplayFailed:広告の表示に失敗したときに提供されます。
OnAdRewarded:広告に報酬が支払われるときに提供されます。広告単位情報と報酬情報が含まれます。
OnAdClicked(任意):ユーザーが広告をクリックしたときに提供されます。
OnAdClosed:広告が閉じられたときに提供されます。
OnAdInfoChanged(任意):広告情報が更新されたときに提供されます。別の広告がロードされていて、CPM/Rate が高い場合に利用できます。
コンポーネント | 古い機能 | 広告単位 (新規) |
|---|---|---|
| リスナー | IronSourceRewardedVideoEvents | LevelPlayRewardedAd |
| イベント | onAdReady | OnAdLoaded |
| onAdLoadFailed | OnAdLoadFailed | |
| onAdOpened | OnAdDisplayed | |
| onAdClosed | OnAdClosed | |
| onAdShowFailed | OnAdDisplayFailed | |
| onAdRewarded | OnAdRewarded | |
| onAdClicked | OnAdClicked | |
| onAdShowSucceeded | n/a (非推奨) | |
| n/a | OnAdInfoChanged |
リワード型広告のロード
OnInitSuccess イベントを受信すると、リワード広告をロードする準備ができます。これは、 メソッドを使用して行う必要があります。
// Load or reload the adrewardedAd.LoadAd();
リワード広告の表示
ShowAd API を使用して、OnAdLoaded イベントを受け取った後にリワード広告を表示できます。
プレースメントを使用している場合は、次に示すように、プレースメントの名前を API の一部として共有します。
// Show ad without placement rewardedAd.ShowAd();// Show ad with placement rewardedAd.ShowAd(placementName);
広告の準備ができているか確認
表示の失敗を避け、広告が正しく表示されるようにするために、ShowAd API を呼び出す前に以下の API を使用することをお勧めします。
IsAdReady:広告が正常にロードされ、広告単位が上限に達していない場合は true、それ以外の場合は false を返します。
IsPlacementCapped:有効な配置に上限がある場合に true を返します。配置が有効でないか、上限がない場合、この API は false を返します。
// Check that ad is ready and that the placement is not cappedif (rewardedAd.IsAdReady() && !LevelPlayRewardedAd.IsPlacementCapped(placementName)){ rewardedAd.ShowAd(placementName);}
いつ
広告がプレイヤーに正常に表示されたら、Rewarded Ad のロード ステップを繰り返して、別の広告をロードできます。一度に 1 つの広告をロードするときに、新しい広告エンティティを作成する必要はありません。
ユーザーの報酬
LevelPlay SDK は、ユーザーがビデオを正常に視聴するたびに OnAdRewarded を起動します。
OnAdRewarded と OnAdClosed は非同期です。OnAdClosed 後に OnAdRewarded が起動された場合でもゲーム内報酬を付与するようにリスナーを設定してください。
// Subscribe to the OnAdRewarded eventad.OnAdRewarded += (adInfo, reward) => { // Grant the reward to the user Debug.Log($"Ad Completed: {adInfo.PlacementName}, Reward: {reward.Name} - {reward.Amount}"); GrantReward(reward.Name, reward.Amount);};// Example method to process the rewardprivate void GrantReward(文字列 rewardName, int rewardAmount){ // TODO:ユーザーに報酬を付与するロジックを実装する Debug.Log($"Granting reward: {rewardName} with amount: {rewardAmount}");}
複数の広告単位リワード型API
コンポーネント | 古い機能 | 広告単位 (新規) |
|---|---|---|
| クラス | IronSource | LevelPlayRewardedAd |
| API | loadRewardedVideo | LoadAd |
| showRewardedVideo | ShowAd | |
| isRewardedVideoPlacementCapped | IsPlacementCapped | |
| isRewardedVideoAvailable | IsAdReady | |
| placement.getRewardName | reward.Name | |
| placement.getRewardAmount | reward.Amount |
リワード広告の完全な実装例
public class LevelPlaySample : MonoBehaviour{ 非公開の LevelPlayRewardedAd 報酬型広告 void CreateRewardedAd(string adUnitId) { rewardedAd = new LevelPlayRewardedAd(adUnitId); rewardedAd.OnAdLoaded += OnAdLoaded; rewardedAd.OnAdLoadFailed += OnAdLoadFailed; rewardedAd.OnAdDisplayed += OnAdDisplayed; rewardedAd.OnAdDisplayFailed += OnAdDisplayFailed; rewardedAd.OnAdRewarded += OnAdRewarded; rewardedAd.OnAdClicked += OnAdClicked; rewardedAd.OnAdClosed += OnAdClosed; rewardedAd.OnAdInfoChanged += OnAdInfoChanged; } void LoadRewardedAd() { rewardedAd.LoadAd(); } void ShowRewardedAd(string placementName = null) { if (rewardedAd.IsAdReady() &&!LevelPlayRewardedAd.IsPlacementCapped(placementName)) { rewardedAd.ShowAd(placementName); } } bool CheckIfRewardedAdIsReady() { return rewardedAd.IsAdReady(); } ブーリアン CheckIfPlacementIsCapped(文字列 placementName) { return LevelPlayRewardedAd.IsPlacementCapped(placementName); } void OnAdLoaded(LevelPlayAdInfo adInfo) { Debug.Log($"Rewarded ad loaded with ad info {adInfo}"); } void OnAdLoadFailed(LevelPlayAdError adError) { Debug.Log($"Rewarded ad failed to load with ad error {adError}"); } void OnAdDisplayed(LevelPlayAdInfo adInfo) { Debug.Log($"Rewarded ad displayed with ad info {adInfo}"); } void OnAdDisplayFailed(LevelPlayAdInfo adInfo, LevelPlayAdError error) { Debug.Log($"Rewarded ad failed to display with ad info: {adInfo} and error: {error}"); } void OnAdRewarded(LevelPlayAdInfo adInfo, LevelPlayReward adReward) { Debug.Log($"Rewarded ad gained reward with adInfo {adInfo} and reward {adReward}"); } void OnAdClicked(LevelPlayAdInfo adInfo) { Debug.Log($"Rewarded ad clicked with ad info {adInfo}"); } void OnAdClosed(LevelPlayAdInfo adInfo) { Debug.Log($"Rewarded ad closed with ad info {adInfo}"); } void OnAdInfoChanged(LevelPlayAdInfo adInfo) { Debug.Log($"Rewarded ad info changed with ad info {adInfo}"); } }