リワード広告を使用すると、ユーザーはリワード広告と引き換えに広告を操作する 獲得できます。このガイドでは、リワード広告を Google Mobile Ads C++ SDK を使用する Android アプリと iOS アプリ
お客様の成功事例をいくつかご覧ください。 事例紹介 1 ケーススタディ 2。
前提条件
- スタートガイドの手順を完了します。
- (Android のみ)JNI
jobject
参照の使用経験があること( Android JNI に関するヒントをご覧ください)。
必ずテスト広告でテストする
アプリを作成、テストする際は、テスト広告ではなく、 配信します。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込むには、専用のテスト広告ユニット ID を使用すると、 リワード広告は、デバイス プラットフォームによって異なります。
- Android:
ca-app-pub-3940256099942544/5224354917
- iOS:
ca-app-pub-3940256099942544/1712485313
すべてのリクエストに対してテスト広告を返すように特別に構成されており、 独自のアプリでコーディング、テスト、デバッグを行う際に、自由に使用できます。 必ずご自身の広告ユニット ID に置き換えてください。 。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、 テスト広告。
実装
リワード広告を統合する主な手順は次のとおりです。
- 広告を読み込みます。
- コールバックを登録します。
- 広告を表示し、報酬イベントを処理します。
RewardedAd
を構成する
リワード広告は RewardedAd
オブジェクトで表示されるため、
アプリへのリワード広告の統合は、まずインスタンスを作成して初期化することです。
/RewardedAd
。
アプリの C++ コードに次のヘッダーを追加します。
#include "firebase/gma/rewarded_ad.h"
RewardedAd
オブジェクトを宣言してインスタンス化します。firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
親ビューを VM にキャストして
RewardedAd
インスタンスを初期化します。AdParent
型。親ビューは、Android への JNIjobject
参照です。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);
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 を使用してメソッドの完了ステータスをモニタリングする
呼び出し。
広告を読み込む
広告を読み込むには、RewardedAd
で LoadAd()
メソッドを使用します。
渡されます。読み込みメソッドでは、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 の例
- サンプルのソースコードを表示する クイックスタート アプリ 確認できます。