カテゴリー: Unity (2ページ / 2ページ)

Unity GoogleAdsの表示非表示

ものすごくハマった

ことの事象

「Disable Ads」ボタンで、広告を非表示にするような課金が可能です。

課金して、アプリを再稼働させれば「Disable Ads」ボタンも「Google Ads」の広告バナーも非表示になりました。

が、購入したすぐには、「Disable Ads」ボタンだけ消えて、バナー広告が残り続ける。広告が非表示なるのはアプリを再起動させた時だけ!

現在は修正できましたので、そのメモ書き。

DestroyとHideの差異?

すでに表示されているのAdmobの広告バナーを見せないためには「Destroy」と「Hide」がある。

◆公式サイト:https://firebase.google.com/docs/admob/unity/start?hl=ja#ad_events

私の理解が、「Destroy」が完全に今の広告バナーの情報を消し去るということだったので、課金が終わればDestroyしてもらうことにしていました。

どうやら、今見せていた広告を見せないのは「Hide」であって、「Destory」は参照していたという情報(状態?)を初期化するようです。メモリー解放とか。この言葉であっているのか・・・。

思った通りに動かなかったソースがこれ。c#。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using UnityEngine.UI;
 
public class AdmobScript : MonoBehaviour {
 
    //UnitID情報
    string adUnitId;
    BannerView bannerView;
    AdRequest request;
 
    //広告非表示購入用ボタン
    public Button disableAdsButton;
 
    //課金有無確認用
    int AdsFalse;
 
    // Use this for initialization
    void Start () {
 
        //if UNITY_ANDROID
        adUnitId = "ca-app-pub-XXXXXXXXXXX";
 
        // 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();
 
        AdsFalse = PlayerPrefs.GetInt ("adsFalse", 0);
 
        if (AdsFalse == 0) {
            //広告表示
            RequestAdmob ();
        } else {
            //購入ボタン非表示
            disableAdsButton.gameObject.SetActive (false);
        }
    }
     
    // Update is called once per frame
    void Update () {
         
    }
 
    public void RequestAdmob() {
        //Admod表示
        bannerView.LoadAd(request);
    }
 
    public void PurchaseOK (){
 
        //課金情報を記録
        PlayerPrefs.SetInt ("adsFalse", 1);
 
        //Admod非表示
        bannerView.Destroy();
        //購入ボタン非表示
        disableAdsButton.gameObject.SetActive (false);
    }
}

ということで、「Disable Ads」ボタンを押した時に動く「Purchase OK」のところを少し修正しました。

bannerView.Destroy();

を、

bannerView.Hide();

になりました。あとは、広告を表示するところを少し修正。
万が一のために、非表示判定時に「Destroy」を追加。といった感じでしょう。

あー。やっぱりなんでハマったのか、解決したあとだとよくわかりません。

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

public class AdmobScript : MonoBehaviour {

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

	//広告非表示購入用ボタン
	public Button disableAdsButton;

	//課金有無確認用
	int AdsFalse;

	// Use this for initialization
	void Start () {

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

		// 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();

		AdsFalse = PlayerPrefs.GetInt ("adsFalse", 0);

		if (AdsFalse == 0) {
			//広告表示
			bannerView.LoadAd(request);
			bannerView.Show();
		} else {
			//購入ボタン非表示
			bannerView.Destroy();
			disableAdsButton.gameObject.SetActive (false);
		}
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	public void PurchaseOK (){
		//課金情報を記録
		PlayerPrefs.SetInt ("adsFalse", 1);
		PlayerPrefs.Save ();

		//Admod非表示
		bannerView.Hide();
		//購入ボタン非表示
		disableAdsButton.gameObject.SetActive (false);
	}
}

Unity の「PlayerPrefs」のおかけ?

未検証なので、私が思ったまで

一度だけ課金できるボタンがあります。一度だけ。

課金したら、そのボタンそのものが消えます。もう表示されません。じゃあ、買ったはいいけど、一度アンインストールして、再インストールしたらそれはどうなるのや。

結果的にはアンインストールして、再インストールしても一度課金した情報は残っていました。なので、ボタンは表示されなかった。

※これはあくまで一つの端末でのお話。

二つ、予想としては、課金したと、課金したという情報をUnityの「PlayerPrefs」でセーブしているのですが、これが、アンインストールしてもローカルに残り続けるということかな?

あくまで予想です。未検証です。デバッグ吐き出しはしていません。

実際に検証しないといけないと思うけど、やり方がわからないからとりあえず忘れる前に書き留めておきます。

「PlayerPrefs」はアプリをアンインストールしても残る?

課金が完了した場合、今後は広告も、広告非表示用課金ボタン表示させない。

これを組み込む時の私の心配が、じゃあ、アプリをアンイントールしてしまえば、もう一度インストールした時にその設定が消えてしまうこと。

ベータ版テスト時にアンインストールを繰り返したので、それで確認した感じだと、再インストールしたら一度課金したら広告も、広告非表示用のボタンも表示されなかった

そこで、自分のソースを見返して見る。

※初回ポスト時点とソースが変わっています。

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

public class AdmobScript : MonoBehaviour {

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

	//広告非表示購入用ボタン
	public Button disableAdsButton;

	//課金有無確認用
	int AdsFalse;

	// Use this for initialization
	void Start () {

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

		// 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();

		AdsFalse = PlayerPrefs.GetInt ("adsFalse", 0);

		if (AdsFalse == 0) {
			//広告表示
			bannerView.LoadAd(request);
			bannerView.Show();
		} else {
			//購入ボタン非表示
			bannerView.Destroy();
			disableAdsButton.gameObject.SetActive (false);
		}

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

	public void PurchaseOK (){

		//課金情報を記録
		PlayerPrefs.SetInt ("adsFalse", 1);
		PlayerPrefs.Save ();

		//Admod非表示
		bannerView.Hide();
		//購入ボタン非表示
		disableAdsButton.gameObject.SetActive (false);

	}

}

私のイメージだと、アンインストールした場合、セーブに使う「PlayerPrefs」も消えてしまうと思っていたけど、そうでもないかもしれない。(データの残りっぱなし?)

※アプリを終了して再稼働させた時に「PlayerPrefs」が生きていることは確認済み

◆公式サイト説明:https://docs.unity3d.com/ja/current/ScriptReference/PlayerPrefs.html

ローカルに保存されるよね・・・。アンインストールしたら、消えるんじゃないの?むしろなんで消えないの?

結果的にはそれでいいけど・・・。

じゃあ、同じGoogleIDで別端末でインストールして見たらどうなるのだろうか。が、確認できていない(笑)。

端末もう一ついるのね!テストできない。

Unity IAPで簡単な課金を実装する(その2 – 完)

課金をGooglePlayと連携する

前提

実機でテストがしたい。ということをしたい場合は、GooglePlayにベータ版を登録する必要がある。

実機ない感じだと、Unity内部のでもが動いてくれるので問題ない。

GooglePlayでのベータ版テストでの課金テストはなんか怖いもんねー。本当に課金しちゃうかもしれないじゃん(そして実際一度テストではなく、購入されちゃいました)。

私の場合、「Admobを課金で非表示にしたい」ということだったんですよね。

Admob自体が実機じゃないと表示されなかったので、もう、実機でテストするしかありませんでした。なので、ベータ版を登録してテストするから、ベータ版のバージョンが5まで上がってしまった・・・。

それでは、前回に引き続きの感じで課金の実機テストをします。

Unity IAPで簡単な課金を実装する(その1)

Unityで作成した課金情報を連携する

課金のIAP CatalogからGooglePlayに連携する課金データを吐き出します。

UnityでCSVファイルを作成してくれるので、GooglePlayではそれを登録してあげればいいだけ。

ここで一つ、Csvを吐き出そうとした怒られました。課金情報の中身が気に入らないらしい。

IAP Catalogの「Store ID Overrides」のGooglePlayに連携するIDが数字じゃないといや見たい。課金アイテムID「Disable Ads」とGooglePlayIDを一緒にしていたのですが、ダメらしい。

今回は課金用アイテムは「広告非表示」1つだけなので、適当に「0」にしました。

GooglePlayよう課金アイテムカタログCSV(長い)なるものが吐き出されます。(場所は選択できます。)

開いて見るとこんな感じ。

GooglePlayにCSVを登録する

こんな風に、ベータ版テストを登録完了している状態です。

オプトインURLが割あたえられたら、テストの準備は完了。課金の情報を登録します。上記画面の左側メニューにある「ストアでの表示」の「アプリ内サービス」を開く。

後撮りになった(ハードコピー撮り損ねた)ので、すでに課金情報が入っている状態。初っ端は「追加してね」と表示されるだけ。

CSVをインポートしたいので、インポート/エクスポートを押す。

CSVをインポートを押して、先ほどUnityで作成したCSVを入れる。

正常終了時はこんな感じ。中にエラーがあれば怒られる(確か、CSVの中身を見ていた時にスペース入れて怒られた記憶・・・)

すると、以下の状態になります。

以上で作業は完了しました。

この後、端末にインストールして実機テストを行い、課金のテストをすればいいだけ。

テスト課金した時のメール

件名にちっさく「Test」と書いている。もっと堂々と書いてくれ。不安になる・・。

Unity IAPで簡単な課金を実装する(その1)

課金で広告を非表示にする

今回も、Androidのみです。iOSでもほぼ変わりないけど、Xcodeビルドの時の対応が必要のようです。

えーっと。実装は恐ろしく簡単でした。

ただ、初めてのテストにどこにハマったのか思い返せないけどどハマりして4日も無駄にしましたね。

たまにあるよね。しょうもないことにハマって気づいたらどうでもよかったということ。・・・はー。思い出すだけで悲しいです。

参考にしたのは、こちら。

◆記事名:UnityでPurchase(課金)を実装する
◆サイトリンク:http://qiita.com/KotaroInc/items/b13426216c92518bb189

◆記事名:新しいUnityIAPを触ってみた。その①~ボタンを作ってみる~
◆サイトリンク:http://blog.livedoor.jp/nyangostar/archives/67154370.html

前提

・実機テストが可能であること
・GooglePlay β版(またはα版)を登録していること

まずはUnity側の実装

GooglePlayから対応する人もいたけど、これはベータテスト版をGooglePlayに完全登録してから云々やらねばいけないから修正が発生したとき恐ろしく面倒臭いので、Unity側の対応から始めます。

1.Unity IAPをImport

ほんの数年前までは課金組み込むのがすごく大変だったようです。これまた個人の好意で公開してもらったものを使いまわしたりしていたよう(調べた感じだと)。

とりあえずプロジェクトを開いて、左の「Services」から「In-App Purchasing」を「On」にします。初期状態は「OFF」です。

インストールしていいか?って聞かれるので「Enable」します。

お子様向けかい?って聞かれます。私は「親の端末で子供(13歳未満)がゲームすることがある」と考えてアプリを作成しました。「端末は親のもの」つまり、課金を押すのは、端末の持ち主である「親」であると。

という建前。

子供向けアプリだと相当審査が厳しいです。その代わり、審査を通ると、いろんな承認マークをもらえますけどね。

子供用アプリページの一覧にも乗れるんじゃなかったけな?

次に進みます。Unity IAPで対応できるのは、Amazon AppsとかGooglePlayとかiOSAppStoreとかとからしいので、とりあえず「Import」。

インストールしてもらいましょう。

すると、Pluginsに「Unity Purchasing」フォルダが出来上がります。これでUnity IAPが使用できる状態になりました。

2.課金ボタンを作成する

まず、この課金は「GooglePlay」用であるとしておきましょう。

「window」の「Unity IAP」から「Android」の「Target Google Play」を選択。

そして、課金クリック用ボタンを作成します。方法は2つ。

普通のボタンに[Add Component]でIAP Buttonをつけてやるのか、最初から[IAP Button]作成するか。・・・差はないけどねー。ボタンじゃなくてテキストにクリックトーグル作ってやるのありですし。

わかりやすく、「Create IAP Button」にしました。

こんなボタンが(普通のボタンです)が出来上がるので、自分なりに調整。

こうなりました。

あとはボタンを押すことで行われる課金の情報を設定します。「課金のカタログ」を作ってその中の一つをボタンに設定してあげるようなイメージを持ちました。

今はなんのカタログもないので、IAP Catalogボタンで「Disable Ads」というカタログIDの課金情報を作成しました。

課金のタイプは「Non Consumable」で一回の課金でそれ以降は使えない状態にします。なんども課金できるのは「Consumable」。

ちなみに、こちらはGoogleアカウントに紐付いているので、一度だけ購入タイプはもう二度とテストができなかった(笑)。

アプリの内部で一度課金が入ったらボタンそのものを非表示にさせますので、このアプリに関してはあまり意味がないです。

英語と韓国語でローカライズ対応をしておきました。窓を消せばそれで終わり。セーブとかはいりません。

カタログを作成し終わると、IAP Buttonでカタログが選べるようになります。

Product IDを先ほど作成したカタログをつけてあげます。あとは、課金が成功したとき「On Purchase Complete」用の処理を作ります。

3.課金処理を実装する

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

public class AdmobScript : MonoBehaviour {

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

	//広告非表示購入用ボタン
	public Button disableAdsButton;

	//課金有無確認用
	int AdsFalse;

	// Use this for initialization
	void Start () {

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

		// 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();

		AdsFalse = PlayerPrefs.GetInt ("adsFalse", 0);

		if (AdsFalse == 0) {
			//広告表示
			bannerView.LoadAd(request);
			bannerView.Show();
		} else {
			//購入ボタン非表示
			bannerView.Destroy();
			disableAdsButton.gameObject.SetActive (false);
		}
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	public void PurchaseOK (){
		//課金情報を記録
		PlayerPrefs.SetInt ("adsFalse", 1);
		PlayerPrefs.Save ();

		//Admod非表示
		bannerView.Hide();
		//購入ボタン非表示
		disableAdsButton.gameObject.SetActive (false);
	}
}

簡単に説明。未来の私のために。

まず、このスクリプトは、Admob表示用のスクリプト。

UnityでAdmobのバナー広告を表示する

この子に課金時の対応を入れました。
「adsFalse」というint型の変数は課金すると「1」になります。これはアプリが終了しても引き継がれる情報(アンインストールされると初期化される)。

そのadsFalseをgetしてAdsFalseに入れておいてから、課金がされたかの判定をします。このこが「0」の時は、課金されていないことになるので、広告と広告非表示用課金ボタンは表示されます。

課金が正常に行われた場合は、「PurchaseOK」メソッドを動かします。

それで、非表示になる。

//Admod非表示
		bannerView.Destroy();

Admodを非表示にするのは、Destroyする。

さらにボタンを非表示にするのはSetActive。

Unity ボタンを非表示にしたい

IAP ButtonのPurchasing Complete(購入完了)の所に、先ほどのスクリプトが付いているオブジェクトを設定して、メソッドを稼働させる。

4.Unityで動きを確認しよう

Debug.logを入れて動きを確認してみました。

AdsFalse は今のところ、「0」なので、課金ボタンが表示されます(Admobも表示されている)

課金用のボタン「Disable Ads」を押すと、この、Unity用の確認ボタン画面が表示されます。ちなみのこれはプラットフォームによって、表示が違うので、iPhoneなのかAndroid端末なのかによっても違います。

私のハマりポイント1でしたね。この見栄えで大丈夫かってなった。とりあえず、Buyを押します。

購入が正常完了しました。「AdsFalse」の値も「1」になり、課金用ボタンも非表示になりました。

これで、Unityの対応は完了。

このあと、ボタンが非表示になった時のボタンのバランスがイマイチだったので、そこだけ修正しました。

Unityに実装するよりこのページ書くほうが時間がかかります。

次の作業はこちら。長すぎて分割。

Unity IAPで簡単な課金を実装する(その2 – 完)

Unity ボタンを非表示にしたい

ただ、ボタンを表示させたくない

以外に対応に時間がかかっていたのでまとめておこう。

「ボタンは存在する」けど、「見せたくない」または「見えないようにしたい」。

◆参考サイト

enabledと、interactalbeと、setActiveで動きが微妙に違う。注意点もそれぞれ違うので、必要に応じて使い分けた方が良いみたい。

多分、サンプルを作って見て自分で動きを確認した方が一番良いと思われる。

SetActiveで非表示

私がやりたいのは、「広告非表示」を購入してくれた場合は、「Disable Ads(広告非表示)」ボタンそのものを見せないこと。

なので、一度初期で購入を確認したら、永遠に表示する必要はなし。SetActiveで簡単に済ませるとしました。

GetComponentであの子を探すという作業も負荷が高いので、pulicにして、直接アタッチさせるつもりです。

これはおそらく、ボタンが少ないからできるんでしょうねー。ボタンが多ければ多いほど、GetComponentでFindするなりした方が楽(あくまで楽)だと思われます。

GetComponentは負荷が大きいらしいのでほどほどに使おう。

まずは、UI使うね宣言。

using UnityEngine.UI;

あとはpulic Button枠を準備。

public Button disableAdsButton;

実際は、課金してくれたら非表示にする予定ですが、とりあえずsetActiveをfalseにして非表示にさせます。

// Use this for initialization
void Start () {
  disableAdsButton.gameObject.SetActive (false);
}

disableAdsButtonさんのGameObjectの状態を「false」にしてやりました。これで終了。

私の場合、Admobを表示している、空のオブジェクトのスクリプトにこれを入れています。なので、それを開くと、publicのボタンが設定できるように。

そこに、非表示にしたボタンをアタッチ。動かしてみると、非表示になっています。

 

簡単ですが、初めてやるときはもっと簡単にできるものだと思っていたので、ちょっとまどろっこしいというのが感想です。

UnityでAdmobのバナー広告を表示する

アンドロイド版

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

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

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

とりあえず、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への配信は予定していないので、置いておきました。

Unity Adsを導入する

ユーザの意思で広告をみる

Unityが提供するアプリへの組み込みタイプの広告。忘れないため、Unity Adsから記事にします。

設定は、どうやらUnity5.3よりものすごく簡単になった様子。確かにものすごく簡単でした。

久しぶりにGoogle先生にお世話になった回数が少なかった。

Unity Ads概要

◆サイトリンク:https://unityads.jp/monetize

15秒の動画が流れ、その動画からアプリをダウンロードした場合に支払いが発生するというタイプ。

日本ではあまり種類っぽい感じではなかったですね(検索してポスティングが少なかった)。NendとかAdmobのようなバナータイプの方がよく選ばれている感じ。

海外サイトをみた感じ、組み込む感じとしては、『ライフがゼロ → 広告を1度見るとライフが1回復』といったタイプでよく使われているようです。

ローカルによって、また、広告が子供でも見れるか見れないかによって広告そのものが流れなかったりするので、収益の面としてはどうなのだろう。

クリックすればとりあえず1円あげるタイプの広告よりは、ダウンロード数に比べて、収益にならない気がします(気だけですけど)。

そんなこと言いつつ組み込んでいる

『Menu』シーンのレベルボタンの下に『Watch Ads』ボタンを入れておきました。

これを押すと、ダミーのAds画面に移動します。左上のクローズを押すと先ほどの画面に戻る。実機でテストすると実際に動くテスト動画が流れます。

縦固定のゲームなのですが、広告が流れる時は強制的に横になりました。

私がこの子に収益を求めているのかというと、全く求めていない

ゲーム自体をUnityに慣れるために作ったもので、単純算数アプリだから子供向けに設定しました。

子供向けのスマホはそもそも決済機能をオフにしているケースも多く、「子供向けアプリ」と設定した時点でGoogleさんも、厳しく確認していました。

この動画広告も、数がそもそも少ないのに、子供対応可能アプリの広告を表示させるという制約があり広告自体が表示されないことも多いらしい(検証未済みです)。

本当にやりたかったのは、Admobでバナー広告を表示して、課金でバナー非表示にしたかったのですが、Admob自体が子供向けアプリに設定した時にテストがほぼ不可能だった(笑)。これはまた、別で書くと。

Unity Adsを設定しよう

実はUnity側だけの設定で事足りる

Unity側の設定の際に参考したサイトさんが、こちら。

◆サイト管理人:Magnagames

◆記事リンク:http://magnaga.com/unity/2016/01/30/unityads/

ただ、これだけだと、実際にどれくらいの人が広告をみて、いくらくらい落としてくれるのかわからない

そして支払い請求はどうするのか正直わからない。なので、Unity社にAdsを使わせて〜という登録を行う。この場合、Unity側で設定されたGameIDが変更となるので、修正してやらないといけない。

Unity Adsを申請する

◆サイトリンク:https://unityads.jp/

サイトに入って、Unityのプロジェクトを作っているアカウントでログイン(違ってもいいけど)。

「EARN MONEY WITH YOUR GAMES」と、「あんたのゲームで儲けようぜ」と書いている方を選ぼう。

全くの初めての作成の場合は、この画面が開くはず。2回目以降の場合は管理画面が表示されます。

こんな感じ。

とりあえず、上の新規追加のところで、プラットフォームを選んで次に進むと、プロジェクトIDとAppleとGoogle用のゲームIDが割り振られる。

Unityに戻って、AdsのAdvancedにあるGameIDを上の方に合わせに行く。

設定完了。これで終わりです。テストすれば、勝手に動き出します。

注意事項と拾った情報

Adsの「Test mode」を、実際のリリース時には必ずチェック外す

これがチェックが入っていると、テスト用広告しか流れない!

ちなみにこのゲームは現時点ではAndroidのみでリリースしています。クローズベータ版でテストしていた時、こちらは外してやっていました。

子供向けのアプリで、Admob系の広告は大変嫌われるよう。特にアップルさんはすごぶる嫌がるようで、子供向けで、無料で、広告を組み込みたい場合はUnity Adsの方が審査に通るようです。

・・・子供向けアプリがやたらと厳しいのはよくわかった。

2 / 2ページ

© Copyright 2017 「It Happens」 All rights reserved.