Android 向けリワード広告インテグレーション
LevelPlay SDK のリワード広告単位を統合するには、LevelPlayRewardedAdListener の実装、広告の可用性の初期化と確認、プレースメント付きの広告の表示、完了時のユーザーへの報酬付与、LevelPlay インテグレーションヘルパーによる設定の確認を行います。
読み終わるまでの所要時間 23 分最終更新 2日前
Unity LevelPlay Rewardedは全画面の広告単位であり、通常はアプリケーションのライフサイクルにおける自然な遷移ポイントで提供されます。
前提条件
- LevelPlay SDK がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要はこちらです。
- LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
- LevelPlay ダッシュボードで AdUnitID を見つけます。
Rewarded Adオブジェクトの作成
リワード広告オブジェクトの作成は、onInitSuccess コールバックを受信した後に実行する必要があります。
オブジェクトは、セッションを通じて複数のロードと表示をハンドルできる再利用可能なインスタンスです。作成後、同じ広告単位の広告をロードおよび表示するために使用する必要があります。
より高度な実装では、必要に応じて複数のリワード広告オブジェクトを作成できます。
LevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");
リワードリスナーの設定
コードに LevelPlayRewardedAdListener を実装して、広告配信に関する情報を取得します。
- リワード広告をロードする前にリスナーを設定することをお勧めします。
- 各リワード広告には、独自のリスナー実装が必要です。
- コールバックはメインスレッドで実行されます。
// Rewarded ad オブジェクトを作成しますLevelPlayRewardedAd mRewardedAd = new LevelPlayRewardedAd("adUnitId");mRewardedAd.setListener(new LevelPlayRewardedAdListener() {@Overridepublic void onAdLoaded(LevelPlayAdInfo levelPlayAdInfo) { // 広告が正常にロードされました}@Overridepublic void onAdLoadFailed(LevelPlayAdError levelPlayAdError) { // 広告ロード失敗 }@Overridepublic void onAdDisplayed(LevelPlayAdInfo levelPlayAdInfo) { // 広告が画面に表示されました}@Overridepublic void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) { // Ad reward received }@Overridepublic void onAdDisplayFailed(LevelPlayAdError levelPlayAdError, LevelPlayAdInfo levelPlayAdInfo) { // Ad fails to be displayed // Optional}@Overridepublic void onAdClicked(LevelPlayAdInfo levelPlayAdInfo) { // Ad was clicked // Optional}@Overridepublic void onAdClosed(LevelPlayAdInfo levelPlayAdInfo) { // Ad was closed // Optional}@Overridepublic void onAdInfoChanged(LevelPlayAdInfo levelPlayAdInfo) { // Called after the ad info is updated.別のリワード広告がロードされ、CPM/Rate が高い場合に利用可能 // Optional}});
LevelPlay 広告情報
LevelPlayAdInfo パラメーターには、ロードされた広告に関する情報が含まれます。
リワード広告の詳細を取得する
getReward API を使用して、LevelPlay ダッシュボードで設定した報酬データにアクセスします。他のメディエーション API とは異なり、これは初期化期化後に SDK にローカルに保存されたデータを返す独立した呼び出しです。これにより、広告を表示する前にユーザーに潜在的なゲーム内報酬を通知する動的なデータ駆動型 UI をビルドできるため、アプリケーション内で報酬値をハードコードする必要がなくなります。
前提条件
getReward API を実装する前に、プロジェクトが以下の技術要件を満たしていることを確認してください。
- SDK 初期化:initSDK を呼び出し、onInitializationSuccess コールバックが報酬データがキャッシュされていることを確認します。
- 広告オブジェクトインスタンス:API を呼び出す前に、有効な広告単位 ID でリワード広告オブジェクトをインスタンス化します。
- 最低 SDK バージョン:LevelPlay SDK バージョン 8.1.0 以上 (ネイティブまたは Unity パッケージ) を使用する。
ベストプラクティス
以下の推奨事項に従って、安定した予測可能なインテグレーションを行ってください。
- 初期化成功時の呼び出し:getReward を呼び出し最適なタイミングは、初期化化成功リスナーのすぐ内側です。これにより、ユーザーが画面に入った瞬間に UI が準備されます。
- 空のステートをチェックします。UI を更新する前に、必ず 0 を超える値を確認してください。これにより、初期化期化中にネットワークワークエラーが発生しても滑らかななユーザー体験が保証されます。
- 配置精度:getReward("placementName") で使用される文字文字列が LevelPlay ダッシュボードで定義された名前と正確に一致していることを確認します。
API 構造体
getReward メソッドを使用すると、LevelPlay ダッシュボードから同期された報酬データにアクセスできます。このメソッドを使用して、ローカル SDK キャッシュに特定の配置値またはグローバル広告単位のデフォルトをクエリします。
getReward
public LevelPlayReward getReward(String placementName)
特定の配置またはデフォルトの広告単位の報酬の名前と金額を取得します。その他に使用するパラメーターはありません。
パラメーター | 説明 |
|---|---|
| placementName | LevelPlay ダッシュボードで定義されている配置の一意のの識別子。 |
名前 (文字列) と金額 (int) を含む LevelPlayReward オブジェクトを返します。
初期設定
getReward API は、LevelPlay SDK のコア コンポーネントとして機能し、以下のロジックで動作して待ち時間なしでデータを利用できるようにします。
- 統合特徴:報酬データはSDKの初期設定中に取得されるため、API呼び出しは瞬時に行われ、ネットワークリクエストを必要としません。
- エディター設定:アプリケーションを LevelPlay SDK と統合すると、API はすぐに使用できます。この機能をテストするために追加のアセットやプラグインは必要ありません。
報酬選択ロジックについて
API は、特定の階層に基づく LevelPlayReward オブジェクトを返します。このロジックを理解することで、特定の報酬が表示される理由のトラブルシューティングに役立ちます。
- 配置レベル:呼び出しで有効な配置名が指定されている場合、SDKはダッシュボードでその配置に設定された特定の報酬を返します。
- 広告単位レベル:配置名が null の場合、または見つからない場合は、SDK は広告単位に定義されたデフォルトの報酬にフォールバックします。
- フォールバック状態:初期化が完了する前に API が呼び出された場合は、空の文字列列名と金額 0 の報酬オブジェクトが返されます。
UIの動的更新
getReward API を使用して、静的ボタンを意図的なアクション喚起に Transform します。例えば、ジェネリックのWatch Videoボタンの代わりに、Watch to Earned 50 Goldとディスプレイできます。
- 検証量:UI コンポーネントを更新する前に、reward.amount が 0 を超えていることを常に確認してください。
- イベント主導型更新:初期化成功リスナー内で API を呼び出して、ユーザーが画面に入った瞬間に UI が正確であることを確認します。
- 大文字と小文字の区別:コード内の配置名の文字文字列が LevelPlay ダッシュボードと正確に一致していることを確認します。文字列が一致しないと、広告単位のフォールフォールバックがトリガーされます。
報酬データ例の取得
以下の例は、reward API for Android の呼び出し方法を示しています。
/** * 広告に関連付けられた報酬を取得します。 * このメソッドを使用して、広告単位または配置に設定された報酬を取得します。ザ * 配置固有の報酬は、有効な配置名の場合は広告単位の報酬よりも優先されます。 * が表示されます。 * @param 配置 報酬を取得する配置名、または広告単位の報酬を使用する`null`。 * @return [LevelPlayReward] オブジェクト失敗した場合 (`name: ""` と `amount: 0`)、空の報酬を返します。 */ @JvmOverloads fun getReward(placement:文字列? = null):LevelPlayReward { val reward = mRewardedAd.getReward(placement) Log.d("LevelPlay", "Amount: ${reward.amount}, Name: ${reward.name}") リターン報酬}
getReward API 実装のトラブルシューティング
- Reward amount は 0 を返します。これは通常、onInitializationSuccess コールバックの前に API が呼び出された場合に発生します。ゲーム内報酬のクエリを実行する前に、SDKの準備が完全にできていることを確認します。
- 間違った報酬タイプ:複数のプレースメントがあるかどうかを確認します。配置名のスペルに誤りがある場合、SDKはデフォルトで特定の配置報酬ではなくプライマリ広告単位の報酬を使用します。
リワード型広告のロード
リワード広告をロードするには、loadAd を使用します。
mRewardedAd.loadAd();
リワード広告の表示
LevelPlayRewardedAdListener API を使用して onAdLoaded コールバックを受信した後にリワード広告を表示します。
- アクティビティの共有に必要です。
- プレースメントを使用する場合は、後述のプレースメントのセクションで示すように、showAd API に配置名を渡します。
- ユーザーに広告が正常に表示されたら、ロードステップを繰り返して別の広告をロードできます。
public void showRewardedAd() {// 広告の準備ができていることを確認しますif (mRewardedAd.isAdReady()) { // 広告を表示 mRewardedAd.showAd(this);}}
広告の準備ができているか確認
表示の失敗を避け、広告が正しく表示されるようにするために、showAd API を呼び出す前に以下の API を使用することをお勧めします。
isAdReady – 広告のロードが成功し、広告単位が上限に達していない場合は true、それ以外の場合は false を返します。
isPlacementCapped – 有効な配置に上限がある場合に true を返します。配置が有効でないか、上限がない場合、この API は false を返します。
// 広告の準備ができていることと、配置に上限がないことを確認します。 if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) {mRewardedAd.showAd(this, placementName);}
Placements
LevelPlayダッシュボードでは、Rewardedのプレースメント ペーシングと上限設定をサポートしています。
リワード広告にプレースメントが設定されている場合は、 showAd メソッドを呼び出して特定の配置の広告を配信します。
public void showRewardedAdWithPlacement() { // 広告の準備ができていることと、配置に上限がないことを確認します。 if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) { // 配置で広告を表示 mRewardedAd.showAd(this, placementName);}}
Dynamic UserId
動的ユーザー ID は、AdRewarded トランザクションを検証するために使用されるパラメーターで、セッションを通じて変更できます。このパラメーターは、サーバー間の広告リワード型コールバックを通じて受け取ります。showAd を呼び出す前に設定する必要があります。
- 文字列 値は 1 ~ 64 文字の英数字でなければなりません。
- コールバックURLで報酬の詳細とともにパラメーターを受け取ります。
dynamicUserId
LevelPlay.setDynamicUserId("userId");
ユーザーの報酬
LevelPlay SDK は、ユーザーがビデオを正常に視聴するたびに onAdRewarded を起動します。
onAdRewarded と onAdClosed は非同期です。onAdClosed 後に onAdRewarded が起動された場合でもゲーム内報酬を付与するようにリスナーを設定してください。
@Overridepublic void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) { // ユーザーに報酬を付与するロジックを実装します String name = reward.getName(); int amount = reward.getAmount();}
リワード広告の完全な実装例
public class RewardedAdActivity extends Activity implements LevelPlayRewardedAdListener {private LevelPlayRewardedAd mRewardedAdvoid createRewardedAd() { mRewardedAd = new LevelPlayRewardedAd("adUnitId"); mRewardedAd.setListener(this);}void loadRewardedAd() { // 広告のロードまたはリロード mRewardedAd.loadAd();}void showRewardedAd() { if(mRewardedAd.isAdReady()) { mRewardedAd.showAd(this); }}void showRewardedAd(@NonNull String placementName) { // 広告の準備ができていることと、配置に上限がないことを確認します。 if(mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) { mRewardedAd.showAd(this, placementName); }}// LevelPlayRewardedAdListener methods@Overridepublic void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdLoadFailed(@NonNull LevelPlayAdError error) {}@Overridepublic void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {}}
LevelPlay Mediation デモアプリケーション
インテグレーション Demo (インテグレーションデモ) アプリケーションは、リワード広告単位 API をアプリケーションに統合する方法を示します。
インテグレーションテストスイートとのインテグレーションを確認します。
次のステップ
インテグレーション ガイドに従って、追加のリワード型広告ネットワークを統合したり、追加の広告フォーマットを設定したりできます。