クリアメモリ

プログラミングやモーショングラフィックス、便利なアプリケーションなど雑多に記録するブログ

【Unity】AdMobをUnityアプリに実装する方法

f:id:clrmemory:20170422174547p:plain 

先日、現在開発しているアプリにAdMob広告を実装しました。

AdMobをアプリ内で表示する為には、Unity以外でもいくつか設定が必要になるので紹介します。

 

 

はじめに

 

今回紹介する方法では、Unityにパッケージをインストールします。

誤って追加、削除してしまうとゲームが正しくビルドできなくなる可能性がありますので注意してください。

 

ではまず、AdMobのUnity用パッケージをインストールしましょう。

 

AdMobパッケージをインポートする

 

以下のサイトから、Google公式の「Unity用AdMob SDK」が配布されているので最新版をダウンロードしておいてください。

https://github.com/googleads/googleads-mobile-unity/releases

 

ダウンロードしたファイルを開くと「GoogleMobileAds.unitypackage」というパッケージファイルが見つかると思いますので、ダブルクリックしてUnityプロジェクトにインポートしましょう。

 

スクリーンショット 2016-05-09 2.58.24

 

インポートされたフォルダは、広告を表示する際に必要になるので削除しないようにしてください。

基本的に、これだけでAdMobの実装は完了しました。

 

続いて広告を呼び出すタイミングで使用するコードを書いていきましょう。

 

コードを書く

 

AdMob広告を表示するためには、コードを用いて広告コードを取得する必要があります。

まずは「バナー広告」を表示するためのコードを紹介します。以下のようなコードを作成してください。

 

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class AdMobBanner : MonoBehaviour {

    public string Android_Banner;
    public string ios_Banner;

    public BannerView bannerView;
    AdRequest request;

    // Use this for initialization
    void Start () {
    }
    void Awake(){
        DontDestroyOnLoad (this);
        // バナー広告を表示
        RequestBanner ();
    }

    // Update is called once per frame
    void Update () {

    }
    private void RequestBanner()
    {
        #if UNITY_ANDROID
        string adUnitId = Android_Banner;
        #elif UNITY_IPHONE
        string adUnitId = ios_Banner;
        #else
        string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.

        bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        request = new AdRequest.Builder ().AddTestDevice("").Build ();

        // Load the banner with the request.
        bannerView.LoadAd (request);
    }
}

 

このようなコードを空のGameObjectに追加し、Android_Bannerとios_Bannerにそれぞれの広告コードを設定してください。

 

あとは、広告を表示したいタイミングで「bannerView.Show( )」を呼び出すことで、バナー広告を表示することができ、「bannerView.Hide( )」で広告を非表示、「bannerView.Destroy( )」でバナー広告を削除できます。

また、DondDestroyOnLoadでシーンをまたいでも削除しないようになっているので、毎シーン配置する必要はありません。

 

 

続いて、インタースティシャル広告を表示するコードを書いていきましょう。インタースティシャル広告を表示するためのコードは以下のものになります。

 

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class AdMob : MonoBehaviour {

    public string Android_Interstitial;
    public string ios_Interstitial;

    private BannerView bannerView;
    private InterstitialAd _interstitial;

    bool is_close_interstitial = false;

    // Use this for initialization
    void Awake () {
    }
    // Use this for initialization
    void Start () {
        // 起動時にインタースティシャル広告をロードしておく
        RequestInterstitial ();
    }
    public void RequestInterstitial()
    {
        #if UNITY_ANDROID
        string adUnitId = Android_Interstitial;
        #elif UNITY_IPHONE
        string adUnitId = ios_Interstitial;
        #else
        string adUnitId = "unexpected_platform";
        #endif

        if (is_close_interstitial == true) {
            _interstitial.Destroy ();
        }

        // Initialize an InterstitialAd.
        _interstitial = new InterstitialAd (adUnitId);
        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder ().AddTestDevice("").Build ();
        // Load the interstitial with the request.
        _interstitial.LoadAd (request);

        is_close_interstitial = false;
    }

    void HandleAdClosed (object sender, System.EventArgs e)
    {
        is_close_interstitial = true;
    }
}

 

こちらの「Android_Interstitial」と「ios_Interstitial」にも広告コードを設定しておいてください。

 

AdMobのインタースティシャル広告は、1度表示するともう使うことはできなくなってしまうので、「is_close_interstitial == true」でインタースティシャル広告を閉じたタイミングで削除するようにしています。

 

 

このコードからインタースティシャル広告を呼び出すためには、任意のタイミングで「_interstitial.Show( )」と書いてあげれば表示することができます。

 

テスト広告の設定

 

AdMobではテスト広告が用意されています。

 

AdRequest request = new AdRequest.Builder ().AddTestDevice(“”).Build ();

の「AddTestDevice()」内にテストデバイスのIDを入力することによって、表示される広告をテスト用のものに変更することができます。

 

テスト用デバイスのIDを取得するには少し特殊な方法になるのですが、AdMobを導入したアプリをiOS端末にインストールする際にXcode経由で行うと思います。

XcodeからRunを押すとアプリの実機テストが行われるのですが、インストールしたアプリの起動直後に以下の画像のような文面があります。

 

スクリーンショット 2015-11-02 19.06.39

 

ここでは隠しているのですが、接続している端末によって表示される内容が変わると思います。ここに書かれたIDを先ほどの「.AddTestDevice(“ テストデバイスID ”)」に書き加えてあげることで、テスト用広告に差し変わります。

 

※AdMobはアドセンスと同様に規約が厳しくなっていると思われます。誤って広告を自分でクリックしてしまわないように、必ずテスト広告を使用するようにしてください。

 

iPhoneでAdMob広告を表示する

 

AdMob広告を表示するために設定はまだあります。ここからはiPhoneとAndroidそれぞれ設定する項目が変わってきますので、どちらか片方だけでリリースするという方は両方設定する必要はありません。

 

ではまずiPhoneでの設定から説明します。

iPhoneでAdMob広告を導入するためには、幾つかのframeworkが必要になります。

 

 

AdMobを実装したiOSアプリをビルドするときに必要なframeworkをこちらの記事でまとめていますので、確認してください。

 

https://clrmemory.com/mac/xcode-admob-framework/

 

 

おそらくframeworkが足りていないと、Buildすることもできないと思います。続いてAndroidアプリの場合の設定項目を紹介していきます。

 

AndroidでAdMob広告を表示する

 

AndroidアプリにAdMob広告を表示する場合、iPhoneの時とは違い「アプリはインストールできるが、広告が表示されない」と言うような状況に陥りやすいと思います。

 

そのような場合は、「AndroidManifest.xml」が正しい位置に配置されていなかったり、Unityパッケージに不備があったりといった原因が考えられます。

AndroidManifest.xmlを配置する場所についてはこちらの記事で説明していますので、確認してください。

 

https://clrmemory.com/android/admob-android-check/

 

これで端末ごとの設定は以上です。あとは実際にアプリを起動し、広告が表示されているかを確認してみてください。

 

まとめ

 

今回の方法を使えば、Unityで開発したアプリにAdMob広告を表示できるようになると思います。

無料アプリで広告を貼ることによって、収益を得られたりアプリを紹介できたりするので、まだアプリ内広告を実装していない方は試してみてはいかがでしょうか。

 

今回紹介した「AdMob」以外にも「nend」だったり、動画広告の「UnityAds」や「AdColony」などの広告サービスもありますので、調べてみて自分の開発したアプリに最適な広告サービスを探してみましょう。

 

ではまた。