ドキュメント

​
​

Development

User Acquisition

Monetization

産業

LevelPlay SDK - iOS

Unity SDK

Android SDK

iOS SDK

Adobe AIR SDK

Flutter SDK

React Native SDK

LevelPlay SDK - iOS

Unity LevelPlay
​
​
iOS SDK
  • 使用の準備
  • 規制と設定
  • Ad formats (広告フォーマット)
    • リワード広告
      • Migrate to rewarded ad unit API
    • Interstitial (インタースティシャル)
    • バナーと MREC
    • iOS 向けネイティブ広告インテグレーション
  • メディエーションネットワーク
  • インテグレーションのテスト
  1. ゲームの成長
  2. Unity LevelPlay
  3. LevelPlay SDK
  4. iOS 開発者向け LevelPlay SDK

iOS 向けリワード広告インテグレーション

動画リワード広告単位をiOSアプリケーションに実装するには、広告単位の初期化、デリゲートの設定、広告イベントの処理を行います。
読み終わるまでの所要時間 22 分
最終更新 2日前

Unity LevelPlay Rewardedは全画面の広告単位であり、通常はアプリケーションのライフサイクルにおける自然な遷移ポイントで提供されます。 
注
このドキュメントは SDK 8.5.0 以降に関連するものです。

前提条件

  • LevelPlay SDK がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要はこちらです。
  • LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
  • LevelPlay ダッシュボードで AdUnitID を見つけます。

Rewarded Adオブジェクトの作成

リワード広告オブジェクトの作成は、onInitSuccess コールバックを受信した後に実行する必要があります。
オブジェクトは、セッションを通じて複数のロードと表示をハンドルできる再利用可能なインスタンスです。作成後、同じ広告単位の広告をロードおよび表示するために使用する必要があります。
より高度な実装では、必要に応じて複数のリワード広告オブジェクトを作成できます。
self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"];
self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId")

デリゲートの実装

コードに LPMRewardedAdDelegate を実装して、広告配信に関する情報を取得します。 
  • リワード広告をロードする前にデリゲートを設定することをお勧めします。
  • 各リワード広告には、独自のデリゲート実装が必要です。
  • デリゲートメソッドはメインスレッドで実行されます。
self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; self.rewardedAd.delegate = self;#pragma mark - LPMRewardedAdDelegate Methods- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo reward:(LPMReward *)reward {}
self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId") self.rewardedAd.setDelegate(self)// MARK: LPMRewardedAdDelegate methodsfunc didLoadAd(with adInfo:LPMAdInfo) {}func didFailToLoadAd(withAdUnitId adUnitId:文字列、エラー:Error) {}func didChangeAdInfo(_ adInfo:LPMAdInfo) {}func didDisplayAd(with adInfo:LPMAdInfo) {}func didFailToDisplayAd(with adInfo:LPMAdInfo、エラー:Error) {}func didClickAd(with adInfo:LPMAdInfo) {}func didCloseAd(with adInfo:LPMAdInfo) {}func didRewardAd(with adInfo:LPMAdInfo、報酬:LPMReward) {}

LevelPlay 広告情報

LPMAdInfo パラメーターには、ロードされた広告に関する情報が含まれます。 LPMAdInfo の実装と使用可能なフィールドの詳細については、こちらを参照してください。

リワード広告の詳細を取得する

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

- (LPMReward *)getRewardWithPlacementName:(NSString *)placementName;
特定の配置またはデフォルトの広告単位の報酬の名前と金額を取得します。その他に使用するパラメーターはありません。

パラメーター

説明

placementNameLevelPlay ダッシュボードで定義されている配置の一意のの識別子。
nil
を渡して、広告単位のデフォルトの報酬を取得します。
名前 (文字列) と金額 (int) を含む LPMReward オブジェクトを返します。

初期設定

getReward API は、LevelPlay SDK のコア コンポーネントとして機能し、以下のロジックで動作して待ち時間なしでデータを利用できるようにします。
  • 統合特徴:報酬データはSDKの初期設定中に取得されるため、API呼び出しは瞬時に行われ、ネットワークリクエストを必要としません。
  • エディター設定:アプリケーションを LevelPlay SDK と統合すると、API はすぐに使用できます。この機能をテストするために追加のアセットやプラグインは必要ありません。

報酬選択ロジックについて

API は、特定の階層に基づく LPMReward オブジェクトを返します。このロジックを理解することで、特定の報酬が表示される理由のトラブルシューティングに役立ちます。
  • 配置レベル:呼び出しで有効な配置名が指定されている場合、SDKはダッシュボードでその配置に設定された特定の報酬を返します。
  • 広告単位レベル:配置名が nil の場合、または見つからなかった場合、SDK は広告単位で定義されたデフォルトの報酬にフォールバックします。
  • フォールバック状態:初期化が完了する前に API が呼び出された場合は、空の文字列列名と金額 0 の報酬オブジェクトが返されます。

UIの動的更新

getReward API を使用して、静的ボタンを意図的なアクション喚起に Transform します。例えば、ジェネリックのWatch Videoボタンの代わりに、Watch to Earned 50 Goldとディスプレイできます。
  • 検証量:UI コンポーネントを更新する前に、reward.amount が 0 を超えていることを常に確認してください。
  • イベント主導型更新:初期化成功リスナー内で API を呼び出して、ユーザーが画面に入った瞬間に UI が正確であることを確認します。
  • 大文字と小文字の区別:コード内の配置名の文字文字列が LevelPlay ダッシュボードと正確に一致していることを確認します。文字列が一致しないと、広告単位のフォールフォールバックがトリガーされます。

報酬データ例の取得

以下の例は、iOS 用の reward API の呼び出し方法を示しています。
/** * 広告に関連付けられた報酬を取得します。 * このメソッドを使用して、広告単位または配置に設定された報酬を取得します。ザ * 配置固有の報酬は、有効な配置名の場合は広告単位の報酬よりも優先されます。 * が表示されます。 * @param 配置 報酬を取得する配置名、または広告単位の報酬を使用する`nil`。 * @return A `LPMReward` オブジェクト。失敗した場合は空の報酬を返します (`name: ""` と `amount: 0`)。 */ LPMReward *reward = [self.rewardedAd getRewardWithPlacementName:@"main_menu"];NSLog(@"Reward: %ld %@", (long)reward.amount, reward.name);
/** * 広告に関連付けられた報酬を取得します。 * このメソッドを使用して、広告単位または配置に設定された報酬を取得します。ザ * 配置固有の報酬は、有効な配置名の場合は広告単位の報酬よりも優先されます。 * が表示されます。 * @param placementName 報酬を取得する配置名、または広告単位の報酬を使用する`nil`。 * @return A `LPMReward` オブジェクト。失敗した場合 (`name: ""` と `amount: 0`)、空の報酬を返します。 */ let reward = self.rewardedAd.getReward(placementName: "main_menu")print("Watch to get \(reward.amount) \(reward.name)")

getReward API 実装のトラブルシューティング

  • Reward amount は 0 を返します。これは通常、onInitializationSuccess コールバックの前に API が呼び出された場合に発生します。ゲーム内報酬のクエリを実行する前に、SDKの準備が完全にできていることを確認します。
  • 間違った報酬タイプ:複数のプレースメントがあるかどうかを確認します。配置名のスペルに誤りがある場合、SDKはデフォルトで特定の配置報酬ではなくプライマリ広告単位の報酬を使用します。

リワード型広告のロード

リワード広告をロードするには、loadAd を使用します。
[self.rewardedAd loadAd];
self.rewardedAd.loadAd()

リワード広告の表示

didLoadAd コールバックの受信後にリワード広告を表示します。
  • ViewController の共有に必要です。 
  • プレースメントを使用する場合は、後述のプレースメントのセクションで示すように、showAd API に配置名を渡します。
  • ユーザーに広告が正常に表示されたら、ロードステップを繰り返して別の広告をロードできます。 
- (void)showRewardedAd { // 広告の準備ができていることを確認します if ([self.rewardedAd isAdReady]) { // 配置なしで表示 [self.rewardedAd showAdWithViewController:self placementName:NULL]; }}
func showRewardedAd() { // 広告の準備ができていることを確認します if self.rewardedAd.isAdReady() { // 配置なしで表示 self.rewardedAd.showAd(viewController: self, placementName: nil) }}

広告の準備ができているか確認

表示の失敗を避け、広告が正しく表示されるようにするために、showAd API を呼び出す前に以下の API を使用することをお勧めします。
isAdReady – 広告のロードが成功し、広告単位が上限に達していない場合は true、それ以外の場合は false を返します。
isPlacementCapped – 有効な配置に上限がある場合に true を返します。配置が有効でないか、上限がない場合、この API は false を返します。
// 広告の準備ができていることと、配置に上限がないことを確認します。 if ([self.rewardedAd isAdReady] && ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName];}
// 広告の準備ができていることと、配置に上限がないことを確認します。 if self.rewardedAd.isAdReady(), !LPMRewardedAd.isPlacementCapped(placementName) { self.rewardedAd.showAd(viewController: self, placementName: placementName)}

Placements

LevelPlayダッシュボードでは、Rewardedのプレースメント ペーシングと上限設定をサポートしています。 
リワード広告にプレースメントが設定されている場合は、 showAd メソッドを呼び出して特定の配置の広告を配信します。
// 広告の準備ができていることと、配置に上限がないことを確認します。if ([self.rewardedAd isAdReady] && ![LPMRewardedAd isPlacementCapped:placementName]) { // 配置で広告を表示 [self.rewardedAd showAdWithViewController:self placementName:@"PlacementName"];}
// 広告の準備ができていることと、配置に上限がないことを確認します。 if self.rewardedAd.isAdReady(), !LPMRewardedAd.isPlacementCapped(placementName) { // 配置で広告を表示 self.rewardedAd.showAd(viewController: self, placementName: placementName) }

Dynamic UserId

動的ユーザー ID は、AdRewarded トランザクションを検証するために使用されるパラメーターで、セッションを通じて変更できます。このパラメーターは、サーバー間の広告リワード型コールバックを通じて受け取ります。showAd を呼び出す前に設定する必要があります。
  • 文字列 値は 1 ~ 64 文字の英数字でなければなりません。
  • コールバックURLで報酬の詳細とともに
    dynamicUserId
    パラメーターを受け取ります。
[LevelPlay setDynamicUserId:@"userId"];
LevelPlay.setDynamicUserId("userId")

ユーザーの報酬

LevelPlay SDK は、ユーザーがビデオを正常に視聴するたびに didRewardAd を起動します。
didRewardAd と didCloseAd は非同期です。didCloseAd の後で didRewardAd が起動された場合でもゲーム内報酬を付与するようにリスナーを設定してください。
- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo reward:(LPMReward *)reward { // ユーザーに報酬を付与するロジックを実装します NSString *name = reward.name; NSInteger amount = reward.amount;}
func didRewardAd(with adInfo: LPMAdInfo, reward: LPMReward) { // ユーザーに報酬を付与するロジックを実装します let name: String = reward.name let amount: Int = reward.amount}

リワード広告の完全な実装例

NS_ASSUME_NONNULL_BEGIN@interface RewardedAdViewController () <LPMRewardedAdDelegate>@プロパティ(非アトミック、強)LPMRewardedAd *rewardedAd;@end@implementation RewardedAdViewController- (void)createRewardedAd { self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; self.rewardedAd.delegate = self;}- (void)loadRewardedAd { // 広告のロードまたはリロードに使用 [self.rewardedAd loadAd];}- (void)showRewardedAd { if ([self.rewardedAd isAdReady]) { [self.rewardedAd showAdWithViewController:self placementName:NULL]; }}- (void)showRewardedAdWithPlacementName:(NSString *)placementName { // 広告の準備ができていることと、配置に上限がないことを確認します。 if ([self.rewardedAd isAdReady] &amp;&amp; ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName]; }}#pragma mark - LPMRewardedAdDelegate メソッド- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo reward:(LPMReward *)reward {} @endNS_ASSUME_NONNULL_END
class RewardedAdViewController:UIViewController、LPMRewardedAdDelegate {var rewardedAd:LPMRewardedAd!func createRewardedAd() { self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId") self.rewardedAd.setDelegate(self)}func loadRewardedAd() { // used to load or reload the ad self.rewardedAd.loadAd()}func showRewardedAd() { if self.rewardedAd.isAdReady() { self.rewardedAd.showAd(viewController: self, placementName: nil) }}func showRewardedAd(withPlacementName placementName:文字列) { // check that ad is ready and that the placement is not capped if self.rewardedAd.isAdReady(), !LPMRewardedAd.isPlacementCapped(placementName) { self.rewardedAd.showAd(viewController: self, placementName: placementName) }}// MARK:LPMRewardedAdDelegate メソッドfunc didLoadAd(with adInfo:LPMAdInfo) {}func didFailToLoadAd(withAdUnitId adUnitId:文字列、エラー:Error) {}func didChangeAdInfo(_ adInfo:LPMAdInfo) {}func didDisplayAd(with adInfo:LPMAdInfo) {}func didFailToDisplayAd(with adInfo:LPMAdInfo、エラー:Error) {}func didClickAd(with adInfo:LPMAdInfo) {}func didCloseAd(with adInfo:LPMAdInfo) {}func didRewardAd(with adInfo:LPMAdInfo、報酬:LPMReward) {} }

LevelPlay Mediation デモアプリケーション

インテグレーション Demo (インテグレーションデモ) アプリケーションは、リワード広告単位 API をアプリケーションに統合する方法を示します。
iOSデモアプリケーションのダウンロード
インテグレーションテストスイートとのインテグレーションを確認します。

次のステップ

インテグレーション ガイドに従って、追加のリワード型広告ネットワークを統合したり、追加の広告フォーマットを設定したりできます。
  • メディエーションネットワークの追加
  • インタースティシャル広告
  • バナー広告
  • ネイティブ広告

Copyright © 2026 Unity Technologies
法規事項プライバシーポリシークッキーDocumentation Terms of Use私の個人情報を販売または共有しないプライバシーに関する選択 (クッキー設定)

"Unity" の名称、Unity のロゴ、およびその他の Unity の商標は、米国およびその他の国における Unity Technologies またはその関係会社の商標または登録商標です (詳しくはこちら)。その他の名称またはブランドは該当する所有者の商標です。

一部のページは利便性向上のため機械翻訳を使用しており、内容に不正確な表現が含まれる場合があります。内容に齟齬または不一致が生じた場合は、英語版を正本とします。

  • このページ
    • 前提条件

    • Rewarded Adオブジェクトの作成

    • デリゲートの実装

      • LevelPlay 広告情報

    • リワード広告の詳細を取得する

      • 前提条件

      • ベストプラクティス

      • API 構造体

        • getReward

      • 初期設定

      • 報酬選択ロジックについて

      • UIの動的更新

      • 報酬データ例の取得

      • getReward API 実装のトラブルシューティング

    • リワード型広告のロード

    • リワード広告の表示

      • 広告の準備ができているか確認

      • Placements

      • Dynamic UserId

    • ユーザーの報酬

    • リワード広告の完全な実装例

    • LevelPlay Mediation デモアプリケーション

    • 次のステップ


このページの問題を報告する