【Unity】 Ad Generation で広告を表示する(実装)

Android

Unityアプリ上で Ad Generation の広告配信サービスを利用して広告を表示するための実装について説明します。Ad Generation (アドジェネ)は国内最大級のインプレッション数を誇るSSPサービスです。スマホアプリの広告媒体仕様に多く選ばれているようです。

Ad Generationはアカウント作成しなくても実装マニュアルが参照できます。(他のサービスもできるかもしれませんが、目につくところに資料がありませんでした)

なので、今回はいきなりテスト広告を実装していきます。




開発環境

  • Unity 2019.4.18f1
  • Xcode 12.4
  • adg_for_unity.unitypackage 2.2.8
  • Android 10
  • iOS 14.4

Ad Generation SDK セットアップ

Android iOS共通セットアップ

実装にあたり、こちらの公式マニュアルを参照しました。

Unityプロジェクトを起動してAssets→Import Package→Custom PackageからこちらのUnityプラグインをインポートします。

画像に alt 属性が指定されていません。ファイル名: image-54.png
SDKのパッケージをインポート

既存のAssetsにImportしようとすると以下のようなWarningが表示されることがあります。

Ad Generation パケージImport画面

Warningが出ているフォルダが原因でビルドエラーや動作不良が発生する可能性があります。もし異常があった場合はWaningのフォルダを削除してImportしたり、少しづつ段階的にImportして原因を探ってみてください。

私の環境では特に問題が起きなかったのでそのままImportして進めています。

Androidセットアップ

ライブラリダウンロード

こちらからAndroid SDKのadg-X.XX.X.aarをダウンロードします。(XXはバージョン番号)

ダウンロードしたファイルはAssets/Plugins/Androidにコピーしておきます。

AndroidManifestの設定

ここで設定する内容は公式のマニュアルには記載されていません。ただ、経験上ネットワーク通信する場合は設定しておいた方がよいと思われます。

Player Settings→Other Settings→Internet AccessをRequireに設定します。

画像に alt 属性が指定されていません。ファイル名: image-56-1024x1019.png
Internet Access設定

この設定でビルドし、Unityが吐き出したAndroidManifest.xmlは以下に格納されています。

PROJECT_PATH\Temp\gradleOut\unityLibrary\src\main\AndroidManifest.xml

このファイルをUnity EditorのAssets/Plugins/Androidにコピーして、このManifestを使用するように Player Settings→Publishing Settings→Build→Custom Main Manifestにチェックを入れます。

最後にAssets/Plugins/AndroidにあるManifestに以下の3点を追加、変更します。

  • <application android:usesCleartextTraffic=”true”>
  • <uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />
  • <meta-data android:name=”unityplayer.ForwardNativeEventsToDalvik” android:value=”true”/>

Google Play Servicesを設定する

UnityにはGoogle Play Service APIを必要なところだけ解決してくれるパッケージがあり、Admobパッケージをインストールすることで自動的に適用されるのでそれを利用しました。Admobはこちらから。

Admobのサービスを使用するわけではないので、AdSenseアカウントは不要です。

iOSセットアップ

フレームワークダウンロード

こちらからiOSフレームワークのADG.framework.zipをダウンロードします。ダウンロードしたファイルは展開すると以下のような構造になっていました。

ADG.framework
└Versions
 └A
  ├Headers
  ├Modules
  └Resources

ADG.frameworkをそのままAssets/Plugins/iOSにコピーしても正しくビルドできない、かつADG-Resources.bundleが見つからないということで。AフォルダをADG.frameworkフォルダにリネームして使用しました。

リネームしたADG.frameworkAssets/Plugins/iOSにコピーし、Resources/ADG-Resources.bundleAssets/Plugins/iOSにコピーします。

フレームワークの追加

その他必要なフレームワーク一覧がこちらに記載されています。マニュアルのようにXcode上で設定するか、フレームワークをAssets/Plugins/iOS下にコピーしてもよいです。

Other Linker Flags設定

XcodeのエディタからOther Linker Flags-ObjCを追加します。が、以下のようにすでに追加されていました。

Other Linker Flags設定

ARCをOFFする

ADGNI.mmのコンパイルフラグに-fno-objc-arcを設定してARCをOFFします。これがONのままだとビルドエラーになってしまいます。リストの右の方をクリックすると値が入力できます。

ARCをOFF

入力できると以下のように値が表示されます。

ARCをOFF設定完了

Ad Generation 広告表示スクリプト

適当なGameObjectに以下のスクリプトをアタッチします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AdGenerationManager : MonoBehaviour
{
    public bool Enabled = true;
    // Start is called before the first frame update
    void Start()
    {
        if (Enabled) {
            ADGUnitySDK.IOSLocationID = "48547";
            ADGUnitySDK.AndroidLocationID = "48547";
            ADGUnitySDK.AdType = "SP";
            ADGUnitySDK.X = 0;
            ADGUnitySDK.Y = 0;
            ADGUnitySDK.Horizontal = "CENTER";
            ADGUnitySDK.Vertical = "TOP";
            ADGUnitySDK.Margin = new int[] { 0, 10, 0, 0 };
            ADGUnitySDK.MessageObjName = "MainCamera";
            ADGUnitySDK.initADG();
        }
    }

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

各種パラメータの意味はこちらを参照してください。エディタでEnabledにチェックを付けると表示、外すと非表示になります。

Android及びiPhone実機での動作確認

Android、iOS共に表示されました。上部に表示されています。

おわりに

アカウント作成を省略して動作確認できるような顧客への導線を引いておくことが素晴らしいと感じました。まずは動かしてみて良ければ導入のようなアプローチが取れます。

そして手引きをGitで示すことで、構成管理も捗ります。また、導入手順も非常にシンプルでよいのですが、ADG.framework.zipのインストールに手間取ったのが残念でした。

ただ、色々な広告配信サービスを試してみましたが、エンジニア目線で最も使いやすいサービスではないかと思います。

コメント

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