UnityでAndroidアプリを開発していると、広告を表示して収益化したくなることがあります。
今回は、Unity 6.3 LTSでGoogle AdMobをOpenUPMから導入する方法を紹介します。
この記事では、以下の環境を前提にしています。
- Unity 6.3 LTS
- Androidアプリ
- Google AdMobを利用
- 広告ユニットIDは取得済み
- Google Mobile Ads Unity PluginをOpenUPMから導入
- バナー広告を表示
AdMobのアカウント作成や広告ユニットIDの取得方法については説明せず、Unityプロジェクトへの組み込みから説明します。
この記事で作るもの
最終的には、Unityアプリを起動すると画面下部にAdMobのバナー広告が表示される状態を目指します。
┌─────────────────────────┐
│ │
│ │
│ アプリ画面 │
│ │
│ │
├─────────────────────────┤
│ AdMob広告 │
└─────────────────────────┘
今回はまずバナー広告を表示します。
1. Google Mobile Ads Unity Pluginについて
UnityからAdMobを利用する場合は、Googleが提供している
Google Mobile Ads Unity Plugin
を使用します。
このプラグインを利用すると、UnityのC#からAdMobの広告を扱うことができます。
Google Mobile Ads Unity PluginはOpenUPMでも公開されており、パッケージ名は以下です。
com.google.ads.mobile
今回は、このパッケージをOpenUPMからインストールします。
2. OpenUPMをUnityに登録する
まずUnityでOpenUPMをScoped Registryとして登録します。
Unityのメニューから、
Edit
→ Project Settings
→ Package Manager
を開きます。
Scoped Registriesに以下を追加します。
| 項目 | 設定値 |
|---|---|
| Name | OpenUPM |
| URL | https://package.openupm.com |
| Scope(s) | com.google |
設定すると、以下のようになります。
Name:
OpenUPM
URL:
https://package.openupm.com
Scopes:
com.google
設定後、ApplyまたはSaveします。
3. Google Mobile Adsをインストールする
次に、
Window
→ Package Manager
を開きます。
パッケージの一覧から、
My Registries
を選択します。
すると、OpenUPMから取得できるGoogle関連パッケージが表示されます。
その中から、
Google Mobile Ads for Unity
を選択してInstallします。
パッケージ名は、
com.google.ads.mobile
です。
これでGoogle Mobile Ads Unity Pluginの導入は完了です。
4. Packages/manifest.jsonを確認する
OpenUPMからインストールすると、Unityプロジェクトの
Packages/manifest.json
にもGoogle Mobile Adsのパッケージが追加されます。
例えば、以下のような設定になります。
{
"scopedRegistries": [
{
"name": "OpenUPM",
"url": "https://package.openupm.com",
"scopes": [
"com.google"
]
}
],
"dependencies": {
"com.google.ads.mobile": "11.5.0"
}
}
※ バージョン番号は記事公開時点の例です。
Google Mobile Ads Unity Pluginは更新されるため、実際には導入時点で利用できるバージョンを確認してください。
5. 古いAdMobプラグインがある場合は注意
以前、AdMobを.unitypackageから導入していた場合は注意が必要です。
OpenUPM版と古い.unitypackage版を両方入れてしまうと、Androidビルド時に問題が発生する可能性があります。
Googleの公式ドキュメントでも、.unitypackageからOpenUPMへ移行する場合は、古いファイルを削除するよう案内されています。
例えば、以下のようなファイル・フォルダです。
Assets/ExternalDependencyManager
Assets/GoogleMobileAds
Assets/Plugins/Android/googlemobileads-unity.aar
Assets/Plugins/Android/GoogleMobileAdsPlugin
iOS向けの古いファイルがある場合は、そちらも削除します。
OpenUPM版を使用する場合は、
古い.unitypackage版
↓
削除
OpenUPM版
↓
使用
という形にしておくのが安全です。
6. AndroidのAPI Levelを確認する
次にAndroidの設定を確認します。
Unityの、
Edit
→ Project Settings
→ Player
→ Android
→ Other Settings
を開きます。
Google Mobile Ads Unity Pluginの現在の公式ドキュメントでは、Androidについて、
Minimum API Level
24以上
Target API Level
35以上
が案内されています。
Unity 6.3 LTSでAndroidアプリを作成する場合は、このあたりの設定も確認しておきましょう。
7. AdMobを初期化する
次にC#からGoogle Mobile Ads SDKを初期化します。
例えば、
Assets
└─ Scripts
└─ AdMobManager.cs
というスクリプトを作ります。
using UnityEngine;
using GoogleMobileAds.Api;
public class AdMobManager : MonoBehaviour
{
private void Start()
{
MobileAds.Initialize(initStatus =>
{
Debug.Log("AdMob initialization completed.");
});
}
}
これだけでGoogle Mobile Ads SDKの初期化ができます。
MobileAds.Initialize()は、アプリ起動時などに一度呼び出しておきます。
8. AdMobのアプリIDを設定する
ここは広告ユニットIDとは別なので注意してください。
AdMobには大きく分けて、
アプリID
広告ユニットID
があります。
例えば、
アプリID
ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx
のように、~が入っているものがアプリIDです。
一方、
広告ユニットID
ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx
のように、/が入っているものが広告ユニットIDです。
AdMobのUnity Pluginでは、Unity側のGoogle Mobile Ads設定にアプリIDを設定します。
アプリIDを設定したうえで、C#から広告ユニットIDを指定して広告を読み込みます。
9. バナー広告を表示する
今回は画面下部にバナー広告を表示します。
以下のようにAdMobManagerを作成します。
using UnityEngine;
using GoogleMobileAds.Api;
public class AdMobManager : MonoBehaviour
{
private BannerView _bannerView;
#if UNITY_ANDROID
private const string AdUnitId =
"ここにAndroidの広告ユニットID";
#elif UNITY_IOS
private const string AdUnitId =
"ここにiOSの広告ユニットID";
#else
private const string AdUnitId = "";
#endif
private void Start()
{
MobileAds.Initialize(initStatus =>
{
LoadBanner();
});
}
private void LoadBanner()
{
_bannerView = new BannerView(
AdUnitId,
AdSize.Banner,
AdPosition.Bottom);
AdRequest request = new AdRequest();
_bannerView.LoadAd(request);
}
private void OnDestroy()
{
_bannerView?.Destroy();
}
}
広告ユニットIDの部分を、自分で取得したAndroid用広告ユニットIDに変更します。
private const string AdUnitId =
"ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
これでバナー広告を読み込めるようになります。
10. AdMobManagerをGameObjectに追加する
作成した
AdMobManager.cs
をGameObjectに追加します。
例えば、
Main
├─ Main Camera
└─ AdMobManager
という構成にします。
AdMobManagerという名前の空のGameObjectを作成し、そこに
AdMobManager.cs
を追加します。
アプリ起動時にStart()が呼ばれ、AdMobが初期化されます。
11. 最初はテスト広告を使用する
ここは非常に重要です。
開発中にいきなり本番用の広告ユニットIDを使うのではなく、まずGoogleが提供しているテスト広告で動作確認することをおすすめします。
Androidのバナー広告用テスト広告ユニットIDは、
ca-app-pub-3940256099942544/6300978111
です。
開発中は一時的に、
private const string AdUnitId =
"ca-app-pub-3940256099942544/6300978111";
として動作確認します。
実機でアプリを起動して、画面下部にテスト広告が表示されれば、基本的なAdMob導入は成功です。
12. テスト広告が表示されたら本番IDに変更する
テスト広告が正常に表示されることを確認したら、自分で取得した広告ユニットIDに戻します。
private const string AdUnitId =
"ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
このように変更します。
本番公開前には、必ず広告ユニットIDやAdMob側の設定を再確認しておきましょう。
13. AdMobManagerを少し発展させる
実際のアプリでは、常に広告を表示するとは限りません。
例えば、
- 設定画面では広告を非表示
- 課金ユーザーは広告を非表示
- 特定の画面だけ広告を表示
- 画面遷移時に広告を表示・非表示
などの制御が必要になることがあります。
そのため、表示・非表示をメソッド化しておくと便利です。
public void ShowBanner()
{
_bannerView?.Show();
}
public void HideBanner()
{
_bannerView?.Hide();
}
AdMobManager全体としては、
using UnityEngine;
using GoogleMobileAds.Api;
public class AdMobManager : MonoBehaviour
{
private BannerView _bannerView;
#if UNITY_ANDROID
private const string AdUnitId =
"ここにAndroidの広告ユニットID";
#else
private const string AdUnitId = "";
#endif
private void Start()
{
MobileAds.Initialize(initStatus =>
{
LoadBanner();
});
}
private void LoadBanner()
{
_bannerView = new BannerView(
AdUnitId,
AdSize.Banner,
AdPosition.Bottom);
AdRequest request = new AdRequest();
_bannerView.LoadAd(request);
}
public void ShowBanner()
{
_bannerView?.Show();
}
public void HideBanner()
{
_bannerView?.Hide();
}
private void OnDestroy()
{
_bannerView?.Destroy();
}
}
としておくと、他のスクリプトから広告を制御しやすくなります。
14. Unity 6.3 LTSでOpenUPMを使うメリット
今回、私は.unitypackageではなくOpenUPMでの導入をおすすめします。
理由の一つは、Unityプロジェクトのパッケージ管理をPackages/manifest.jsonで管理できることです。
例えば、
Packages/manifest.json
を見ることで、
どのAdMobパッケージを使用しているか
を確認できます。
GitなどでUnityプロジェクトを管理している場合にも、パッケージの管理状況を把握しやすくなります。
また、古い.unitypackageをAssetsフォルダに大量に配置する構成と比較して、プロジェクトを整理しやすいというメリットもあります。
15. Unity 6.3 LTSへの移行時は特に注意
既存のUnityプロジェクトをUnity 6.3 LTSへ移行する場合は、AdMobだけを更新すればよいとは限りません。
特にAndroidビルドでは、
Unity
Android SDK
Gradle
Android Gradle Plugin
Google Mobile Ads
External Dependency Manager
など、複数の要素が関係します。
そのため、
Unity 6.1
↓
Unity 6.3 LTS
↓
AdMobもOpenUPM版へ整理
↓
Android実機でテスト
というように、一つずつ確認していくと原因を特定しやすくなります。
16. 導入手順まとめ
今回の手順をまとめると、以下のようになります。
① Unity 6.3 LTSプロジェクトを準備
↓
② Edit
→ Project Settings
→ Package Manager
↓
③ OpenUPMをScoped Registryに登録
↓
④ Window
→ Package Manager
↓
⑤ My Registries
↓
⑥ Google Mobile Ads for UnityをInstall
↓
⑦ AdMobアプリIDを設定
↓
⑧ MobileAds.Initialize()
↓
⑨ BannerViewを作成
↓
⑩ テスト広告で実機確認
↓
⑪ 本番広告ユニットIDに変更
↓
⑫ Androidアプリをビルド
これでUnity 6.3 LTSのAndroidアプリからGoogle AdMobのバナー広告を表示できるようになります。
まとめ
Unityでスマートフォンアプリを開発する場合、AdMobは比較的導入しやすい広告サービスの一つです。
今回紹介したように、OpenUPMを利用すれば、
OpenUPM
↓
com.google.ads.mobile
↓
Google Mobile Ads Unity Plugin
↓
C#からAdMobを操作
という構成で導入できます。
特に既存のUnityプロジェクトでAdMobを利用している場合は、古い.unitypackage版が残っていないか確認することが重要です。
Unity 6.3 LTSへのバージョンアップを行う場合は、AdMobだけでなくAndroidのビルド環境も含めて、一つずつ確認しながら移行することをおすすめします。
今後は、バナー広告だけでなく、
- インタースティシャル広告
- リワード広告
- アプリ起動広告
- 広告を表示・非表示する仕組み
などもUnityから実装できます。
まずはテスト広告を実機で表示できるところまで確認するのがおすすめです。
コメント