Unity 6.3 LTSでGoogle AdMobをOpenUPMから導入する方法

Unity Unity
Unity

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に以下を追加します。

項目設定値
NameOpenUPM
URLhttps://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から実装できます。

まずはテスト広告を実機で表示できるところまで確認するのがおすすめです。

コメント

タイトルとURLをコピーしました