本ページにはプロモーションが含まれます
Unity

【Unity】UnityでAdMobの実装

この記事は約4分で読めます。

はじめに

多くのカジュアルゲームがAdMobを使用しているようなので、UnityAd同様にAdMobを導入し、Playmakerのアクション化して実装していきたいと思います。

https://dev.gdevnote.com/unity/%e3%80%90unity%e3%80%91playmaker%e3%81%a8admob%e3%81%ae%e9%80%a3%e5%8b%95
こちらに移動しました。

導入

導入方法はGoogle AdMob公式の説明どおり、Google AdMobのパッケージをインストールしました。
サンプルを見よう見まねで実装しバナー広告が表示できることが確認できました。
広告プレースメントというものがあるので、Playmakerで呼び出しの相性が良さそうなのでこちらを導入しました。

発生した問題の対応

iOS関連のライブラリ参照のエラー対応

Android向けでしか環境を作っていなかったので、iOS環境でないのでiOS関連のライブラリ参照できないエラーがでました。
Unable to open Assets/ExternalDependencyManager/Editor/1.2.172/Google.IOSResolver.dll: Check external application preferences.

ツール側で自己解決してくれればいいのにと、よく思います。

表示を消したいので以下を実施します。

Google.IOSResolver選択する。
チェック外して、Apply

これでエラーも表示されなくなりました。

あとはUnityAd同様Managerクラスにそれを呼び出すPlaymakerアクションを作っていくような形になります。
広告プレースメントというBeta機能を見つけた。最初からGoogleさんがオブジェクトに広告アサインして必要な時にそれを活性操作したら広告ができるらしい。要はスクリプトコンポーネントされたもの。状態遷移のPlaymakerとも相性良いので、ここから広告プレースメントを導入にきりかえました。
※今現在、GoogleMobileAds-Ad-Placementは非推奨、終了です。

・パッケージ導入時のエラー対応

Google Mobile Ads Unity Pluginパッケージをインストールしたあとに、GoogleMobileAds-Ad-Placementのパッケージを入れるとエラーでビルドできなくなるので、Google Mobile Ads Unity Pluginパッケージを全部削除して、GoogleMobileAds-Ad-Placementsのみをインストールしたら、エラーは表示されずに導入できるようになります。

ビルド依存関係エラーの対応

導入の際にはJAVAのビルドエラーが出る場合があるので、そんな時はPreferencesのExternal Toolsでパスのチェックを入れなおすと、パスの再設定やJDKインストールしなおしてくれて、ビルドも成功する。

便利!

未解決の問題

AdMobのPlacementを使っていたら、LoadAdのタイミングでYou are trying to create a MonoBehaviour using the ‘new’ keyword. This is not allowed. が発生する。MonoBehaviourではnewして追加できないんだからね!っ怒られるメッセージなのですが、普通にC#MonoBehaviourでAddComponetしても同じエラーになりますね?いろいろ海外のQAみたらGoogle側のライブラリの問題らしい。※現時点Betaだし。通常もAdMobのパッケージでも昔のバージョンで同じようなことあったっぽいし、リリースビルドでは正常に広告表示されてるから気持ち悪いけどいったん放置。

おわりに

バナー、リワード広告の実装、表示ができました。

追記

このあとUnity Mediationを導入、動作検証したりしました。まだバナーは使用できないようなので、AdMobに戻したところ、テストでは動作するのですが、実機動作確認時に毎回、Error com.google.android.gms.ads.rewarded.RewardedAdでクラッシュするようになってしまった。
UnityのコンパネでUnity MediationにGoogle紐づけたせいなのか、キャッシュなのか、GCされてないためかわからなかったです。いくつか解決を試みているうちに半日が過ぎてしまいました。

UnityAdのダッシュボードのUnity MediationへのGoogleの紐づけも外しましたが、adbのエラーは変わらずでクラッシュします。ダメもとで、Unityのバージョンを2021.3.5f1から2021.3.10f1にバージョンアップしたらクラッシュしなくなり、今も安定してビルド、動作しています。原因がわからないままなのが、もやもやしています。