アンドロイド版

こちらのサイトでは未来の私への伝言のようなものです。

今日の私昨日の私のコードに悩むことがよくあるので、さらにたまにしかやらないようなことを、知識がない前提で書いて見る予定です。

なので、全く初めての方でもわかるように書きたいですね。

とりあえず、UnityアプリにAdmobをいれて行きましょう。

全面広告とか他にも数種類はる広告の表示方の中で、私の場合は全面広告大っ嫌いなので、下にでるバナー広告にします。

本当に、全面広告撲滅してほしい。全面広告が表示されるブログ様だと、そのまま消してしまいますね・・・。

でも人によっては、下にバナーがずっと表示される方が嫌いな人もいて(うちの先輩)、一回全面広告出るのは見てやるよってなるんだそうです。

私自身が実際にやったことがあり、テスト確認できたのがアンドロイドだけなので、アンドロイド版のみの説明になります。(おそらくiPhoneでもあんまり変わりない。と思う)

前提

AdmobのパブリッシャーIDを持っていること。

・実機でテストができること

つまりは、Google Adsenseを持っていること!

広告収入をGoogle側から支払うとき、Adsenseから支払われるんだそうです。なので、二つのアカウントが必要になります。

私の場合は、Adsenseを持っていたので、Admobは審査なしで通過しました。(Adsense審査には1ヶ月ほどかかりました。)

AdmobからAdsense審査をされる場合、すでに配信しているアプリ(ダウンロード実績があるアプリ)で依頼を出した方が良いでしょう。審査期間は、どうでしょう。Adsenseと同じくらいかしら。

また、Admobは実機でしか表示されないので、テストがしたかったらテスト端末で稼働させましょう。

1.Admobで広告を表示するアプリを登録する

 

Admobにログインしてトップ表示。「新しいアプリを収益化」を押す。

次に表示される画面で、アプリの情報を登録して行きます。

GooglePlayやらApple Storeに登録済みのアプリなら検索して登録できるようなんですが、私の場合はローカルに置いたままテストをしてから、アプリをストアに登録したいので、「手動で追加」を選択していれて行きます。

プラットフォームは「Android」。プラットフォームごとに作ってやる必要があるみたい。(多分、どのアプリで広告が押されたのかという区別のためだと思うけど)

広告フォーマットは「バナー」他の設定はいじらず、ユニット名だけ「Bottom」としておきました。そして保存。

とりあえず、Firebaseアナリティクスは無視して、設定完了すると広告ユニットIDが出来上がります。Googleさんも次のステップで「アプリに組み込んでね〜」という案内をしてくれます。

2.UnityにAdmobを組み込む

1.Google Mobile Ads Unity Plugin のダウンロード

Google で提供しているツールをUnityアプリにインポートします。その前にダウンロード。

◆サイトリンク:https://firebase.google.com/docs/admob/unity/start?hl=ja

少し前まで、UnityにAdmobを組み込むためには個人の好意で公開してくれたプラグインで対応していたみたい。今はGoogleさんが提供してくれています。

プラグインをダウンロードしておきましょう。

ソースコート(zip)にはデモアプリが入っています。ま、稼働したの見たかったらこれも実機稼働させないと行けないですけどねー。それに、Admobを単純に表示したかったらここまで複雑なスクリプトは不要のようです。(公式サイトによれば)

参考までかな。

2.プロジェクトのシーン(画面)を開く

スタート画面、画像のメニュー画面、あとは4つの演算ゲーム画面の6画面構成のプロジェクトです。

Admobは1箇所につけておくと、それ以降の画面にも表示がされるとか。

私の場合は、メニュー画面にAdmobオブジェクトを作成します。(スタート画面には表示されなくてもいい)

3.ダウンロードしたパッケージをインポート

メニューバーの「Assets」の「Import Package」から「Custom Package」。

このままでインポート。

今までなかったプラグインやらフォルダーが出来上がります。これで準備は終わり。

4.空のオブジェクトにスクリプトでAdmobを表示させる

Admobという名の空のオブジェクトに「AdmobScript」を作成しました。

スクリプト用のソースは、Google公式サイトで教えてくれています。

◆リンク:https://firebase.google.com/docs/admob/unity/start?hl=ja#basic_interstitial_request

まず、私が書いたソースがこちら(公式のまま)。ちなみにC#。

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

public class AdmobScript : MonoBehaviour {

	// Use this for initialization
	void Start () {
		RequestAdmob();
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	private void RequestAdmob()
	{
		//if UNITY_ANDROID
		string adUnitId = "ca-app-pub-XXXXXXXXXXXX";

		// Create a 320x50 banner at the top of the screen.
		BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);
		// Create an empty ad request.
		AdRequest request = new AdRequest.Builder().Build();
		// Load the interstitial with the request.
		bannerView.LoadAd(request);
	}
}

説明すると、まずは頭にGoogleAdsを使わせて宣言。

using GoogleMobileAds.Api;

課金購入すると広告を非表示にさせたいので、RequestAdmobメソッド呼び出し方にしました。

公式の説明だと、Androidか、iPhoneかを区別できるようにしていますので、一つのプロジェクトでandroidとiPhoneの対応をされる方はそちらの通りにすればよかろうと。

// if UNITY_ANDROID
		string adUnitId = "ca-app-pub-XXXXXXXXXXXX";

ここには、上のAdmobで作成したUnitの広告IDをいれます。

こいつ。

ソースの流れとしては、初期化して、Admob表示させてというリクエストキーを作成して、リクエストする。という流れ。

bannerView.LoadAd(request);

ちなみにこのバナーの大きさは一番どこでも見えるタイプ(320×50)。

「AdPosition」を変えればトップにも表示できます。私は「Bottom」にしました。こちらも公式サイトで説明があります。

全面広告のソースについても公式サイトにありますよ。

書き方をちょっとだけ変えてこれを自分用にカスタマイズすると、以下の通りになりました。

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

public class AdmobScript : MonoBehaviour {

	//UnitID情報
	string adUnitId;
	BannerView bannerView;
	AdRequest request;

	// Use this for initialization
	void Start () {

		//if UNITY_ANDROID
		adUnitId = "ca-app-pub-XXXXXXXXXXXX";

		// Create a 320x50 banner at the top of the screen.
		bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);
		// Create an empty ad request.
		request = new AdRequest.Builder().Build();

		//広告表示
		RequestAdmob();
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	private void RequestAdmob()
	{

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

うん、変数外出しに書いただけ。
課金入れて表示非表示切り替えたいからこうしています。

5.javaファイルを作成する

スクリプトの作成が終わったら、最後の作業へ。

Assetの「Play Services Resolver」→「Android Resolver」→「Resolve Client java」でjavaファイルを作成します。

もし「Play Services Resolver」が表示されない場合は、Build SettingでAndroid(またはiOS)になっているのか確認。

成功したよって、言われたらOKを押して終了です。

「Plugins」の「Android」にこんな子達が作成されました。

Admodが表示された

いちいち実機で確認しないと行けないから面倒臭い・・・。ちなみにこちらは「テスト版」ではなく、本物の広告です。

テスト用Admobを表示することができるようですが、かなりの手間そうだったのでヤラナカッタ。

自分で広告をクリックしないことを念頭にそのままリアルもので確認しました。

はまったところ

javaファイルを作成してねって、知らなんだ。5番手順を抜かしてビルドしたら表示されなくて困りましたわ。

「Admobが表示されない」で検索した時に「Ja」ファイル作ったか?って回答があって(テラテイルだったかな?)、対応できました。

公式サイトで教えてくれよ・・・Googleさん。

iOS対応だと、ここからさらにもう一手間が必要な様子。私は現段階ではiPhoneへの配信は予定していないので、置いておきました。