リワード広告は、ユーザーが広告を操作することと引き換えにアプリ内報酬を獲得できる広告です。このガイドでは、AdMob のリワード広告を Unity アプリに組み込む方法について説明します。
お客様の成功事例も併せてご覧ください(事例紹介 1 / 事例紹介 2)。このガイドでは、Unity アプリにリワード広告を組み込む方法を解説します。
前提条件
- スタートガイドの手順を完了していること
常にテスト広告でテストする
次のサンプルコードには、テスト広告のリクエストに使用できる広告ユニット ID が含まれています。この ID は、どのリクエストに対しても実際の広告ではなくテスト広告を返すように設定されており、安全に使用できます。
ただし、AdMob ウェブ インターフェースでアプリを登録し、アプリで使用する独自の広告ユニット ID を作成した後は、開発中に使用するデバイスを明示的にテストデバイスとして設定する必要があります。
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Mobile Ads SDK を初期化する
広告を読み込む前に MobileAds.Initialize()
を呼び出して、アプリで Google Mobile Ads SDK を初期化します。この処理は 1 回だけ行います(アプリの起動時に行うのが理想的です)。
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
メディエーションを使用している場合、すべてのメディエーション アダプターを確実に初期化できるよう、広告の読み込みはコールバックが発生してから行います。
リワード広告を読み込む
リワード広告の読み込みは、RewardedAd
クラスで静的 Load()
メソッドを使用して行います。読み込まれた RewardedAd
オブジェクトは、完了ハンドラのパラメータとして提供されます。次のサンプルでは、リワード広告を読み込んでいます。
AD_UNIT_ID は、実際の広告ユニット ID に置き換えてください。
任意: サーバーサイド認証(SSV)コールバックを検証する
サーバーサイド認証コールバックで追加データを必要とするアプリでは、リワード広告のカスタムデータ機能を使用する必要があります。リワード広告オブジェクトに設定されている文字列値はすべて、SSV コールバックの custom_data
クエリ パラメータに受け渡されます。カスタムデータ値が設定されていない場合、SSV コールバックは custom_data
クエリ パラメータ値を持ちません。
次のコード例は、リワード広告の読み込み後に SSV の各種オプションを設定する方法を示したものです。
SAMPLE_CUSTOM_DATA_STRING は、実際のカスタムデータに置き換えてください。
カスタム リワード文字列を設定する場合は、広告を表示する前に行う必要があります。
リワード広告を報酬のコールバック付きで表示する
広告を表示する際には、ユーザーへの報酬を処理するコールバックを指定する必要があります。読み込んだ広告は 1 回だけ表示できます。広告を表示する準備ができていることを確認するには、CanShowAd()
メソッドを使用します。
以下のコードは、リワード広告を表示するための最適な方法を示しています。
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// The ad was showen and the user earned a reward.
});
}
リワード広告のイベントをリッスンする
広告の動作をより細かくカスタマイズするには、広告のライフサイクルで生じるさまざまなイベントを利用します。次のコードは広告イベントをリッスンします。
rewardedAd.OnAdPaid += (AdValue adValue) =>
{
// Raised when the ad is estimated to have earned money.
};
rewardedAd.OnAdImpressionRecorded += () =>
{
// Raised when an impression is recorded for an ad.
};
rewardedAd.OnAdClicked += () =>
{
// Raised when a click is recorded for an ad.
};
rewardedAd.OnAdFullScreenContentOpened += () =>
{
// Raised when the ad opened full screen content.
};
rewardedAd.OnAdFullScreenContentClosed += () =>
{
// Raised when the ad closed full screen content.
};
rewardedAd.OnAdFullScreenContentFailed += (AdError error) =>
{
// Raised when the ad failed to open full screen content.
};
リワード広告をクリーンアップする
使い終わった RewardedAd
への参照を破棄する前に、必ず Destroy()
メソッドを呼び出してください。
if (rewardedAd != null)
{
rewardedAd.Destroy();
}
これによって、そのオブジェクトはもう使用されておらず、オブジェクトが占有していたメモリを回収しても問題ないことを、プラグインに通知できます。このメソッドを呼び出さないとメモリリークが発生します。
次のリワード広告をプリロードする
RewardedAd
は使い捨てオブジェクトです。一度リワード広告を表示した後、同じオブジェクトを再度使うことはできません。次にリワード広告をリクエストするには、新しい RewardedAd
オブジェクトを作成する必要があります。
次のインプレッションの機会に備えてリワード広告を用意するには、広告イベント OnAdFullScreenContentClosed
または OnAdFullScreenContentFailed
が発生した時点でリワード広告をプリロードするようにします。
参考情報
- HelloWorld の例: すべての広告フォーマットの最小限の実装