しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

UnityアプリにAdmobを導入してみた

UnityアプリにAdmobを入れたのでその事を書いてみます。
導入は下の公式ドキュメントを参考にしました。

Game Developers: Ads Best Practices   |   AdMob   |   Google Developers

UnityへAdmobプラグインをインストール

Unity用のAdmobパッケージは下URLから取得しました。

Release Google Mobile Ads Unity Plugin v2.3.1 · googleads/googleads-mobile-plugins · GitHub

Admobを導入したいプロジェクトを開いた状態でGoogleMobileAds.unitypackageをダウンロードして開くと下のようにImportするか聞かれます。
ここでImportを選べばインストール完了です。

f:id:llcc:20150802124515p:plain

バナー広告の表示

バナー広告を表示するコードは下の通りです。
これをメインカメラに紐付ければ画面に広告が表示されます。

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

public class AdScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        RequestBanner();
    }
    
    private void RequestBanner()
    {
#if UNITY_ANDROID
            string adUnitId = "INSERT_ANDROID_BANNER_AD_UNIT_ID_HERE";
#elif UNITY_IPHONE
            string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE";
#else
            string adUnitId = "unexpected_platform";
#endif

        // Create a 320x50 banner at the top of the screen.
        BannerView 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.
        bannerView.LoadAd(request);
    }
}

Scene切替時に広告を非表示にする

上のコードだとバナーはSceneを切り替えても表示されます。
別Sceneに行った時に消したい場合は下のようにBannerViewDestroyを呼ぶ必要があります。

void OnDestroy() {
    bannerView.Destroy();
}

バナー広告を下に表示する

上コードだとバナー広告は画面上部にされます。
画面の下に表示したい場合はAdPosition.TopAdPosition.Bottom変える必要があります。

バナー広告その他

試してないのですが、インタースティシャル広告の表示や広告ロード時のイベント取得も簡単にできそうです。
詳しくは先ほども上げた公式リファレンスを参考にすると良さそうです。

Game Developers: Ads Best Practices   |   AdMob   |   Google Developers

iPhoneアプリ向けAdmob設定

iPhoneアプリでAdmobを動かす為にはiOS向けにビルドした後に何点か設定を行う必要があります。
公式リファレンスに手順は載っているのですが、何点かハマりどころがあったので書いていきます。

@importが動かない

XcodeiPhoneアプリを起動しようとすると@importの部分でエラーを吐きます。
その問題は下のEnable ModulesをYESにする事で解消できます。

f:id:llcc:20150802135729p:plain

ライブラリを入れる必要がある

iPhoneでAdmobを動かす際は下のライブラリを入れる必要があります。

AdSupport
AudioToolbox
AVFoundation
CoreGraphics
CoreTelephony
EventKit
EventKitUI
MessageUI
StoreKit
SystemConfiguration

自分は一々入れるのがめんどくさかったのでPodfileに下のように記述してpod installしました。
これで上記ライブラリは全てインストールされます。

pod 'Google-Mobile-Ads-SDK', '~> 7.0'

CocoaPods経由でインストールした場合のエラー

しかしこの方法を実行すると下のようなエラーが出てうまく動きません。
その対策として自分は下URLからAdmobのSDKをダウンロードしてGoogleMobileAds.frameworkを直接Xcodeに追加しました。

Undefined symbols for architecture arm64: "_kGADAdSizeSmartBannerLandscape", referenced from:

Google Mobile Ads SDK   |   Mobile Ads SDK for iOS   |   Google Developers

広告表示

これで無事に表示する事ができました。
iOSの設定は結構苦労しました。

f:id:llcc:20150802140523p:plain

Androidアプリ向けAdmob設定

AndroidiPhone程大変ではないですが設定が必要です。
作業としては<android_sdk>/extras/google/google_play_services/libproject/google-play-services_lib/の中身をAssets/Plugins/Androidに移せば終わりです。

しかしその際にAndroidManifest.xmlに設定の追加しないとインストールされたアプリが表示されなくなります。
自分のようにAndroidアプリやったことないと結構ハマるかもしれません。
詳細は下記事にまとめてみました。

llcc.hatenablog.com

まとめ

以上でAdmobの表示が両端末でできるかと思います。
ハマりどころが多かったり設定が多かったりするのがちょっと大変でした。