バナー広告は、画面の一部分に表示される長方形のイメージ広告またはテキスト広告で、アプリの操作中は画面に表示され続けます。一定時間が経過すると自動的に更新されるよう設定できます。モバイル広告を初めてお使いの場合は、この広告から始めるのが最適です。 事例紹介。
このガイドでは、AdMob のバナー広告を Unity アプリに統合する方法を説明します。また、コード スニペットと設定方法のほか、バナーの適切なサイズに関する情報とその他の関連リソースへのリンクも紹介します。
前提条件
スタートガイドの手順を完了し、Unity アプリに Google Mobile Ads Unity プラグインをインポートしておく必要があります。
BannerView を作成する
バナーを表示するための最初のステップとして、GameObject
に追加された C# スクリプトに BannerView
オブジェクトを作成します。
Unity Editor を使用して広告を簡単に組み込むには、新しい広告プレースメント(ベータ版)をお試しください。
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
private BannerView bannerView;
...
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize(initStatus => { });
this.RequestBanner();
}
private void RequestBanner()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
string adUnitId = "unexpected_platform";
#endif
// Create a 320x50 banner at the top of the screen.
this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
}
}
BannerView
のコンストラクタには、次のパラメータがあります。
adUnitId
-BannerView
が広告を読み込む AdMob 広告ユニットの ID です。AdSize
- 使用する AdMob 広告のサイズです(詳しくは、バナーのサイズをご覧ください)。AdPosition
- バナー広告を配置する位置です。AdPosition
列挙型は、広告の位置として有効な値を示します。
プラットフォームに応じて異なる広告ユニットが使用されることにご注意ください。iOS で広告をリクエストするには iOS 広告ユニットを使用し、Android でリクエストするには Android 広告ユニットを使用する必要があります。
(省略可)カスタムの広告位置
BannerView
が画面上で配置される場所を、AdPosition
値による指定よりも柔軟に管理するには、x 座標と y 座標のパラメータを持つ BannerView
コンストラクタを使用します。
// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);
BannerView
の左上の位置が、コンストラクタに渡される x 値と y 値で指定されます(原点は画面の左上です)。
(省略可)カスタムの広告サイズ
広告には AdSize 定数値を使用できるほか、カスタムのサイズを指定することもできます。
AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);
常にテスト広告でテストする
上のサンプルコードには広告ユニット ID が含まれ、これを使って自由に広告をリクエストできます。この ID は、個々のリクエストに対して実際の広告ではなくテスト広告を返すよう特別に構成されているため、安全に使用できます。
ただし、AdMob 管理画面でアプリを登録し、アプリで使用する独自の広告ユニット ID を作成した場合は、開発時にデバイスをテストデバイスとして明示的に設定する必要があります。これは非常に重要です。実際の広告を使ったテストは(広告をタップしなくても)AdMob ポリシー違反とみなされ、アカウントの停止につながる可能性があります。開発時に常にテスト広告を取得する方法については、テスト広告をご覧ください。
広告を読み込む
BannerView
がインスタンス化されると、次のステップは広告を読み込むことです。これは、BannerView
クラスの loadAd()
メソッドで行います。そのためには AdRequest
引数を使用して、1 つの広告リクエストに関するランタイムの情報(ターゲティング情報など)を保持しておく必要があります。
以下は、広告を読み込む方法の例です。
... private void RequestBanner() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/6300978111"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif // Create a 320x50 banner at the top of the screen. this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the banner with the request. this.bannerView.LoadAd(request); } ...
これで、AdMob のバナー広告をアプリで表示できるようになりました。
広告イベント
広告の動作をより細かくカスタマイズするには、広告のライフサイクルで生じるさまざまなイベント(読み込み、開始、終了など)を利用します。以下に示すように、適切な EventHandler
にデリゲートを登録して、これらのイベントをリッスンします。
... using System; using UnityEngine; using GoogleMobileAds.Api; ... public class GoogleMobileAdsDemoScript : MonoBehaviour { private BannerView bannerView; public void Start() { this.RequestBanner(); } private void RequestBanner() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/6300978111"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); // Called when an ad request has successfully loaded. this.bannerView.OnAdLoaded += this.HandleOnAdLoaded; // Called when an ad request failed to load. this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad; // Called when an ad is clicked. this.bannerView.OnAdOpening += this.HandleOnAdOpened; // Called when the user returned from the app after an ad click. this.bannerView.OnAdClosed += this.HandleOnAdClosed; // Called when the ad click caused the user to leave the application. this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the banner with the request. this.bannerView.LoadAd(request); } public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { MonoBehaviour.print("HandleFailedToReceiveAd event received with message: " + args.Message); } public void HandleOnAdOpened(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpened event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); } public void HandleOnAdLeavingApplication(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLeavingApplication event received"); } }
OnAdFailedToLoad
イベントには特別なイベント引数が含まれます。このイベントが渡す HandleAdFailedToLoadEventArgs
のインスタンスには、エラーについて説明する Message
が含まれます。
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("Banner failed to load: " + args.Message);
// Handle the ad failed to load event.
};
広告イベント | 説明 |
---|---|
OnAdLoaded |
OnAdLoaded イベントは、広告の読み込みが完了すると実行されます。 |
OnAdFailedToLoad |
OnAdFailedToLoad イベントは、広告の読み込みに失敗すると呼び出されます。Message パラメータは、発生した障害のタイプを示します。 |
OnAdOpening |
ユーザーが広告をタップしたときに呼び出されるメソッドです。分析パッケージを使用してクリックスルーをトラッキングしている場合は、ここで記録することをおすすめします。 |
OnAdClosed |
ユーザーが広告のリンク先 URL にアクセスした後でアプリに戻るときに呼び出されるメソッドです。一時停止中のアクティビティを再開したり、アプリを操作可能な状態にするために必要な他の動作を実行したりするには、このメソッドを使用します。 |
OnAdLeavingApplication |
onAdOpened の後にユーザーが別のアプリ(Google Play ストアなど)を起動し、現在のアプリがバックグラウンドに移動すると、このメソッドが呼び出されます。 |
バナーのサイズ
標準のバナーサイズについては、以下の表をご覧ください。
サイズ(単位は dp、幅×高さ) | 説明 | 対応デバイス | AdSize の定数値 |
---|---|---|---|
320×50 | 標準のバナー | スマートフォン、タブレット | BANNER |
320×100 | バナー(大) | スマートフォン、タブレット | LARGE_BANNER |
300×250 | IAB レクタングル(中) | スマートフォン、タブレット | MEDIUM_RECTANGLE |
468×60 | IAB フルサイズ バナー | タブレット | FULL_BANNER |
728×90 | IAB ビッグバナー | タブレット | LEADERBOARD |
指定された幅 × 最適な高さ | アダプティブ バナー | スマートフォン、タブレット | なし |
画面の幅 × 32|50|90 | スマートバナー | スマートフォン、タブレット | SMART_BANNER |
今後はスマートバナーに代わってアダプティブ バナーが使用される予定です。詳しくは、アダプティブ バナーをご覧ください。 |
バナー広告を消去する
BannerView
の使用を終了する場合は、必ず Destroy()
メソッドを呼び出してから参照を削除するようにしてください。
bannerView.Destroy();
これにより、オブジェクトが使用されなくなり、占有されていたメモリを再利用できることがプラグインに通知されます。このメソッドを呼び出さないと、メモリリークが発生します。