ゲーム デベロッパー向け: 広告に関するおすすめの方法

このガイドでは、Google Mobile Ads SDK を使用してバナー広告とインタースティシャル広告をゲームに組み込むおすすめの方法について説明します。ゲーム デベロッパー向けのクロスプラットフォームおよびプラットフォーム固有の統合オプションがあります。

クロスプラットフォームのオプションには、次のものがあります。

このガイドでは、汎用の OpenGL ベースの Android Java ゲームおよび Cocos2d-x での統合について説明します。

基本的な参考情報

OpenGL を使用して Google Mobile Ads を Android コードに組み込む場合は、スタートガイドおよびインタースティシャル広告を参照して、この SDK の使用方法を確認してください。

OpenGL ベースのゲームエンジンを使用する一方で、ネイティブ Android SDK に広告を統合する場合は、バナー広告を表示するタイミングを、ゲームの一時停止中やクリア時など、ユーザーが画面でゲームプレイに集中していない状況に限定することをおすすめします。これには以下のメリットがあります。

  1. ユーザー エクスペリエンスの向上。ユーザーは、ゲームプレイ中に広告に中断されることを好みません
  2. パフォーマンスの向上。広告はゲームの FPS レートに影響する場合があります
  3. 意図しないクリックの防止

次の例は、最小限のコードでバナー広告を追加する方法を示しています。広告を読み込む適切なタイミングは、デベロッパー側で考慮する必要があります。

OpenGL ベースの Android ゲームのほとんどで、SurfaceView がなんらかの形で使用されています。 メイン アクティビティは、次のようになります。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SurfaceView gameView = new SurfaceView(this);
        setContentView(gameView);
    }
}

次の例では、RelativeLayout を使用して、画面の下部にスマートバナー広告を固定しています。

public class MainActivity extends Activity {
    private AdView adView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SurfaceView gameView = new SurfaceView(this);

        // Create and load the AdView.
        adView = new AdView(this);
        adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        adView.setAdSize(AdSize.SMART_BANNER);

        // Create a RelativeLayout as the main layout and add the gameView.
        RelativeLayout mainLayout = new RelativeLayout(this);
        mainLayout.addView(gameView);

        // Add adView to the bottom of the screen.
        RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        mainLayout.addView(adView, adParams);

        // Set the RelativeLayout as the main layout.
        setContentView(mainLayout);
    }
}

これで、アプリでバナーを表示する準備ができました。残りの手順は、広告の表示と広告リクエストの実行だけです。この処理は、showBanner というヘルパー メソッドで行います。

private void showBanner() {
  adView.setVisibility(View.VISIBLE);
  adView.loadAd(new AdRequest.Builder()
      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
}

showBanner メソッドを呼び出すと、ゲームにバナー広告が表示されます。

ゲームプレイ時は、広告を非表示にしてください。この処理を行うには、次の hideBanner メソッドを呼び出します。

private void hideBanner() {
  adView.setVisibility(View.GONE);
}

ゲームオーバーになった場合は、showBanner メソッドを再度呼び出し、広告を更新して表示します。

Cocos2d-x

いずれかの Cocos2d-x ゲームエンジンを使用する場合は、AnySDK フレームワークを統合して、アプリで広告システムを使用するように構築することで、Android アプリを収益化できます。

このガイドでは、AnySDK を Cocos2d-x アプリに統合する手順を説明しますが、この概念は Cocos2d-x エンジンの全スイートに応用できます。

要件

動画リワード広告を使用するには、以下が必要です。

  • 最新バージョンの Cocos2d-x
  • AnySDK フレームワーク v1.2.3 以降
  • AnySDK パッケージ ツール

ゲームへの AnySDK のインポート

AnySDK Quick Start Guide を完了します。このガイドでは、C++ と Android の両方のレベルで AnySDK をインポートする手順について説明しています。

AnySDK 広告システム API

AnySDK のインポートが正常に完了したら、AnySDK 広告システムガイドを参照して、AnySDK 広告システム用のコードを記述できます。

AdMob では、AD_TYPE_BANNER フォーマットと AD_TYPE_FULLSCREEN フォーマットがサポートされています。 AdMob の組み込みでよく使用するメソッドを次に示します。

バナー広告をリクエストして表示するには、showAds メソッドを AD_TYPE_BANNER 広告タイプを指定して使用します。

AdsPlugin* ads = AgentManager::getInstance()->getAdsPlugin();
ads->showAds(AD_TYPE_BANNER);

バナーを非表示にするには、hideAds メソッドを使用します。

ads->hideAds(AD_TYPE_BANNER);

インタースティシャル広告

インタースティシャルを明確に表示する前に、次の方法で、AD_TYPE_FULLSCREEN 広告タイプを指定し、preloadAds メソッドを使用してインタースティシャルをプリロードします。

AdsPlugin* ads = AgentManager::getInstance()->getAdsPlugin();
ads->preloadAds(AD_TYPE_FULLSCREEN);

その後、インタースティシャルを表示するタイミングで showAds を呼び出します。

ads->showAds(AD_TYPE_FULLSCREEN);

複数のバナーやインタースティシャルの使用

複数のバナーサイズやさまざまな広告ユニット ID を使用する必要がある場合は、showAds メソッド、hideAds メソッド、preloadAds メソッドにインデックスを渡すことができます。 以下に、いくつか例を示します。

ads->showAds(AD_TYPE_BANNER, 2); // show banner #2
ads->hideAds(AD_TYPE_BANNER, 2); // hide banner #2
ads->showAds(AD_TYPE_FULLSCREEN, 2); // preload interstitial #2
ads->preloadAds(AD_TYPE_FULLSCREEN, 2); // show interstitial #2

インデックスを指定しない場合、デフォルト値として 1 が使用されます。

あとで AnySDK パッケージ ツールで AdMob を設定する際に、各バナーには広告ユニット ID、広告サイズ、位置を設定し、各インタースティシャルには広告ユニット ID を設定できます。

広告イベントがないかのリッスン

広告が正常に取得された場合など、広告イベントの通知を受け取るには、クラスに AdsListener を実装します。このリスナーには、すべてのイベントを通知する単一のメソッド onAdsResult が含まれています。

AdMob は、以下の広告イベントをサポートしています。

  • kAdsReceived
  • kAdsShown
  • kAdsDismissed
  • kNetworkError
  • kUnknownError

onAdsResult メソッドのスケルトン実装は通常、次のようになります。

void onAdsResult(AdsResultCode code, const char* msg) {
  switch(code) {
    case kAdsReceived:
      // Ad has been received.
      break;
    case kAdsShown:
      // Ad is presenting a full-screen view.
      break;
    case kAdsDismissed:
      // A full-screen ad view is being dismissed.
      break;
    case kNetworkError:
      // Ad failed due to network error.
      break;
    case kUnknownError:
      // Ad failed.
      break;
    default:
      break;
  }
}

これを基にして、各イベントに対するアクションを決めることができます。

最後に、広告プラグインの広告リスナーを設定して、広告イベント通知を受け取るクラスを AnySDK に指定します。

AgentManager::getInstance()->getAdsPlugin()->setAdsListener(this);

AnySDK パッケージ ツールの使用

アプリで AnySDK 広告システムを使用するように設定したら、AnySDK パッケージ ツールを使用して、AdMob が広告スペースを利用できるようにします。AnySDK は、Android と iOS で個別に設定する必要があります。Android の手順を次に説明します。

  1. AnySDK アプリの設定画面の [SDK] で、広告プロバイダとして [AdMob] を選択し、アプリでサポートするフォーマットを選択します。

  2. [パラメータ] セクションで、バナーやインタースティシャルの Android 広告ユニット ID を入力します。バナーを使用する場合はサイズと位置も指定します。

    アプリで複数のバナーを使用する場合(複数のバナーやインタースティシャルの使用セクションを参照)、[+] タブをクリックして、各バナーの広告ユニットを設定します。インタースティシャルについても同様に設定します。

  3. 最後に、[書き出し] タブで、[参照] を選択してアプリの .apk ファイルを指定します。[開始] をクリックします。

以上です。この手順によって、AdMob が含まれるバージョンのプロジェクトが生成されます。

AdMob メディエーションのサポート

AnySDK フレームワークでメディエーションを行うには、メディエーションのスタートガイドで説明しているとおり、各サードパーティ ネットワークの SDK とアダプタ ライブラリの両方をダウンロードして含める必要があります。ただし、OS によって次の違いがあります。

  • Android の場合、必須ライブラリは、AnySDK パッケージ ツールを使用する前に、プロジェクトの libs/ フォルダに追加します。

DoubleClick for Publishers のサポート

DFP 広告ユニットは AnySDK で使用できますが、広告サイズの定数値は、AnySDK で指定できるものに限られます。カスタム広告サイズや指定範囲によるターゲット設定はサポートされていません。

よくある質問

ここで説明されていないゲームエンジンを使用しています。Google モバイル広告を組み込むにはどうすればよいですか?
バナー広告に関するおすすめの方法をご覧ください。どのゲームに広告を実装する場合にも該当する内容です。
Unity に関するサポートはどこで受けることができますか?
Google モバイル広告 Unity プラグインに関するご質問は、Google Mobile Ads SDK デベロッパー向けフォーラムをご覧ください。バグを報告するには、GitHub の問題追跡ツールに問題を追加してください。 Unity に関する一般的なご質問は、Unity コミュニティにお問い合わせください。
バージョン 5 より前の Unity では広告がクリック可能にならないのはなぜですか?
バージョン 5.0 より前の Unity を実行するユーザーは、Android マニフェスト ファイルを更新して Unity メイン アクティビティに unityplayer.ForwardNativeEventsToDalvik メタデータタグを追加する必要があります(詳細は上記の説明をご覧ください)。
Cocos2d-x に関するサポートはどこで受けることができますか?
AnySDK フレームワークの統合、AnySDK パッケージ ツールの使用、バグの報告に関するサポートは、AnySDK の連絡フォームをご利用ください。

フィードバックを送信...