リワード広告

<ph type="x-smartling-placeholder">


リワード広告を使用すると、ユーザーはリワード広告と引き換えに広告を操作する 獲得できます。このガイドでは、リワード広告を Google Mobile Ads C++ SDK を使用する Android アプリと iOS アプリ

お客様の成功事例をいくつかご覧ください。 事例紹介 1 ケーススタディ 2

前提条件

必ずテスト広告でテストする

アプリを作成、テストする際は、テスト広告ではなく、 配信します。実際の広告を使用すると、アカウントが停止される可能性があります。

テスト広告を読み込むには、専用のテスト広告ユニット ID を使用すると、 リワード広告は、デバイス プラットフォームによって異なります。

  • Android: ca-app-pub-3940256099942544/5224354917
  • iOS: ca-app-pub-3940256099942544/1712485313

すべてのリクエストに対してテスト広告を返すように特別に構成されており、 独自のアプリでコーディング、テスト、デバッグを行う際に、自由に使用できます。 必ずご自身の広告ユニット ID に置き換えてください。 。

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、 テスト広告

実装

リワード広告を統合する主な手順は次のとおりです。

  1. 広告を読み込みます。
  2. コールバックを登録します。
  3. 広告を表示し、報酬イベントを処理します。

RewardedAd を構成する

リワード広告は RewardedAd オブジェクトで表示されるため、 アプリへのリワード広告の統合は、まずインスタンスを作成して初期化することです。 /RewardedAd

  1. アプリの C++ コードに次のヘッダーを追加します。

     #include "firebase/gma/rewarded_ad.h"
    

  2. RewardedAd オブジェクトを宣言してインスタンス化します。

     firebase::gma::RewardedAd* rewarded_ad;
     rewarded_ad = new firebase::gma::RewardedAd();
    

  3. 親ビューを VM にキャストして RewardedAd インスタンスを初期化します。 AdParent 型。親ビューは、Android への JNI jobject 参照です。 Activity、または iOS の UIView へのポインタ。

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = rewarded_ad->Initialize(ad_parent);
    
  4. Future を変数として保持する代わりに、 初期化オペレーションのステータスを確認するには、 RewardedAd オブジェクトに対する InitializeLastResult()。役立つ可能性があります を使用して、グローバル ゲームループの初期化プロセスを追跡します。

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = rewarded_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

firebase::Future の使用について詳しくは、以下をご覧ください。 Future を使用してメソッドの完了ステータスをモニタリングする 呼び出し

広告を読み込む

広告を読み込むには、RewardedAdLoadAd() メソッドを使用します。 渡されます。読み込みメソッドでは、RewardedAd を初期化しておく必要があります 広告ユニット ID と AdRequest オブジェクトがあることを確認します。 firebase::Future が返されます。これを使用して、状態と結果をモニタリングできます。 表示されます。

次のコードは、RewardedAd が完了した後に広告を読み込む方法を示しています。 正常に初期化されました:

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);

コールバックに登録する

メッセージを受け取るためには、FullScreenContentListener クラスを拡張する必要があります。 リワード広告の表示やライフサイクル イベントの通知を受け取ることができます。カスタム FullScreenContentListener サブクラスは、 RewardedAd::SetFullScreenContentListener() メソッドを呼び出し、 広告が成功または失敗した場合のコールバックと 破棄されます。

次のコードは、クラスを拡張して広告に割り当てる方法を示しています。

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* example_full_screen_content_listener =
    new ExampleFullScreenContentListener();
  rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);

RewardedAd は使い捨てオブジェクトです。つまりリワード広告が 再表示することはできません。おすすめの方法は、別のリワード広告を読み込むことです。 を OnAdDismissedFullScreenContent() メソッドで FullScreenContentListener にすると、すぐに次のリワード広告の読み込みが開始されます 変更されます

広告を表示して報酬イベントを処理する

リワード広告をユーザーに表示する前に、 報酬と引き換えにリワード広告のコンテンツを視聴するという明示的な選択リワード 広告は常にオプトイン方式でなくてはなりません。

広告を表示する際に、処理する UserEarnedReward オブジェクトを提供する必要があります。 提供します

次のコードは、RewardedAd を表示する方法を示しています。

// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
    public firebase::gma::UserEarnedRewardListener {
 public:
   ExampleUserEarnedRewardListener() { }

  void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
    // Reward the user!
  }
};

ExampleUserEarnedRewardListener* user_earned_reward_listener =
  new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);

よくある質問

初期化の呼び出しにタイムアウトはありますか?
10 秒後に、Google Mobile Ads C++ SDK が メディエーション ネットワークが未解決のままである場合でも、Initialize() から firebase::Future が返されました 初期化が完了していません。
初期化コールバックを受け取ったときに、準備が完了していないメディエーション ネットワークがある場合はどうなりますか?

SDK の初期化が完了した後に広告を読み込むことをおすすめします。 メディエーション ネットワークの準備ができていない場合でも、Google Mobile Ads C++ SDK は そのネットワークに広告をリクエストしますメディエーションネットワークが終了しても タイムアウト後に初期化されるため、その後の広告リクエストには引き続き あります。

この期間中は、引き続きすべてのアダプタの初期化ステータスをポーリングできます。 GetInitializationStatus() を呼び出してアプリ セッションを開始します。

特定のメディエーション ネットワークの準備ができていない理由を調べるにはどうすればよいですか?

AdapterStatus.description() は、アダプターのサービス提供準備が完了していない理由を表します。 あります。詳細については、 クイックスタート アプリのサンプル メディエーション アダプタのステータスを記録する例については、GitHub をご覧ください。

参考情報

GitHub の例