Android用のUnityアプリに、AdMob広告を設定する方法について。無料でアプリをリリースすると、しがらみが少なく、仕様変更も気になりませんね。
Android 3.4.1
Google Mobile Ads Unity Plugin
相変わらずなのですが、AndroidやAdMobの変更でUnityもいろいろとやり方が変わっています。
ここでは、シンプルにAdMobeのバナーを貼る方法を試してみます。
その前に、AdMobに登録する必要があります。IDなどをゲットしておきましょう
AdMob に申し込む
PluginのImport
GoogleのページにあるAdMobの設定方法 Get Started これに沿って進めていきます。また、Bannerの作成はバナー広告に沿ってやてみましょう。
最初にGoogle Mobile Ads Unity Plugin が必要なので以下のサイトからダウンロードしてください。バージョンによる差分がよくありますので注意してください。
PlugIn Download
GoogleMobileAds-XXX.unitypackage をダウンロードします
Unity のプロジェクトから「Assets」「Import Package」「Custom Package…」
ダウンロードしたGoogleMobileAds-XXX.unitypackage を選択します
全てチェックが入ったままで「Import」をクリックします。
Mobile Ads SDK を追加
Android Platform Switch:
「File」「Build Settings」から
Sceneを保存して「Add Open Scenes」でチェックを入れます。
「Android」を選択して「Switch Platform」をクリックして
プラットフォームをスイッチします。
「Assets」「Play Services Resolver」「Android Resolver」 「Resolve」 を選択します。
Unity Play Services Resolverにより依存関係がAssets/Plugins/Android ディレクトリにコピーされます。
これにより、「Asset」「Plugins」「Android」以下に *.jar, *.aar がコピーされます。
これができていない場合はメニューの「Asset」から
「Play Services Resolver」「Android Resolver」「Force Resolve」を試してみます。
これができないと広告が出ないので、他にエラーが出ていないか確認してください。
AdMobアプリIDを設定
「Assets」「Google Mobile Ads」「Settings」を選択
GoogleMobileAdsSettingsが開くので、「Google AdMob」のEnabled チェックボックスをオンにしてAdMob を有効にします。
また、Android に AdMob アプリ ID を入力します。(下の例はテスト用のIDを入れています)
スクリプトの作成
Googleのサポートページの情報をもとに以下のような簡単なスクリプトファイルを作成します。
C#ファイルを作成してコードを記述
AdMob.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; public class AdMob : MonoBehaviour { // Use this for initialization void Start () { // アプリID、 これはテスト用 string appId = "ca-app-pub-3940256099942544~3347511713"; // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(appId); RequestBanner(); } private void RequestBanner(){ // 広告ユニットID これはテスト用 string adUnitId = "ca-app-pub-3940256099942544/6300978111"; // 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); // Create a 320x50 banner at the top of the screen. //bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); } // Update is called once per frame void Update () { } } |
アプリIDと広告ユニットIDはAdMobのコンソールから取得、無い場合はとりあえずテスト用のIDを使って設定の確認はできます。
アプリID: ca-app-pub-9999999999999~99999999 のように「〜」が間にある
広告ユニットID: ca-app-pub-9999999999999/99999999 のように「/」がある
「GameObject」「Create Empty」で空のObjectを作りこのスクリプトをドラッグ&ドロップします。
Trouble Shooting:
最近気づいたのですが、Mac環境だと問題が少ない。逆にWindowsの場合toolsを変えたり、このAdMobのエラーもWindowsに多い気がします。
Switch Platform を実行した時に
Resolution failed
というエラーが小さく下に出ていないでしょうか
Consoleで見ると
Gradle failed to fetch dependencies
ERROR: JAVA_HOME is set to an invalid directory
というエラーが出ています。
Windowsでの環境変数としてJAVA_HOMEを設定しているものが実際のパスに異なるバージョンなのでエラーということです。
最近のプラグインで発生しています。以前のバージョン例えば3.6.1では大丈夫です、ただし設定も昔のやり方にしないといけないのですが…
この場合は、パスを設定し直せば解決します。
Windowsのケースなので「システムのプロパティ」「詳細設定」
「環境変数」のシステム環境変数の JAVA_HOME のPathを実際のPathに設定します。
Pathの設定ではbinを含まないようにします。
例:
C:\Program Files\Java\jdk1.8.0_121
尚、環境変数の変更なのでPCを再起動したほうがいいでしょう
Player Settings の設定
Debug test の段階であればとりあえず Bundle ID だけでも設定しておきます。
公開用にはアイコンなどの設定が色々あります。
Android アプリ公開手順について
これで、Androidを接続してビルド、実行をします。
IDを実際のものに変えて、デバイスをテスト用にすると「Test Ad」という表示とともに、実際の広告例が表示されます。
また、AndroidManifestにアプリIDを記述する場合があります。
この設定では広告が画面上になっていますが、画面下にするには
AdPosition.Bottomにすれば広告が下に移動します
1 |
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom); |
References:
Get Started | Google Mobile Ads SDK for Unity | Google Developers
アプリID | AdMob
AdMob ヘルプセンター