# Unity Plugin Getting Started / バナー広告
# はじめに
Unityでの開発に必要な環境がインストールされていることを前提としています。
# 対応バージョン
platform | version |
---|---|
Unity | 3.5+ |
iOS | 10.0+ |
Android | 5.0+ |
# 導入の流れ
- SDKをダウンロードします
↓ - プロジェクトにpackageをインポートします
↓ - Android用SDKをプロジェクトに追加します
↓ - AndroidManifest.xmlの設定を行います
↓ - Google Play Servicesの設定を行います
↓ - 例を参考に広告表示の実装を行います
↓ - iOS用frameworkを追加します
# 1. SDKをダウンロードする
こちらからダウンロードしてください。
iOS SDK ダウンロード (opens new window)
(Downloads > ADG.xcframework.zip
)
Android SDK ダウンロード (opens new window)
(Downloads > adg-x.x.x.aar
)
Unity Plugin ダウンロード (opens new window)
(Downloads > adg_for_unity.unitypackage
)
# 2. プロジェクトにpackageをインポートする
ADG_UnityPluginフォルダの中のadg_for_unity.unitypackageをUnityでインポートする。
Assets配下に以下の構成でファイルが格納されます。
・plugins
├ ADGUnitySDK.cs
├ ADGMonoBehaviour.cs
├・Android
│├adgni-x.x.x.aar
│└AndroidManifest.xml
└・iOS
└ADGNI.mm
※ 同名のファイルが存在する場合は上書きされます。
# 3. Android用SDKをプロジェクトに追加する
ダウンロードしたADG_AndroidSDKフォルダの中に入っているadg-x.x.x.aarを、UnityプロジェクトのAndroidフォルダ(adgni-x.x.x.aarと同階層)に配置してください。
※ x.x.xにはAndroid向けSDKのバージョン番号が含まれます。
※ ファイルは最新版のみ置いてください。
# 4. AndroidManifest.xmlを修正する
以下の設定をAndroidManifest.xmlにpermissionの設定を追加します。
(以下の内容以外はアプリの設定に合わせて自由にカスタマイズしてください)
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
# 5. Google Play Servicesを設定する
本SDKでは提携DSPの追跡型広告を表示するためGoogle Advertising IDを使用します。
Google Advertising IDを利用するにはAndroid Studio上でのGoogle Play Servicesの導入が必須となります。
UnityでGoogle Play Serviceを導入するにはPlayServicesResolver (opens new window)等を使用してください。
# 6. 広告表示を実装する
ADGUnitySDKクラスに各パラメーターを設定してください。
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";
IOSLocationID
管理画面から発行されたiOSアプリ向けのIDを設定します。
"48547"を設定すると掲載イメージが確認できます。AndroidLocationID
管理画面から発行されたAndroidアプリ向けのIDを設定します。
"48547"を設定すると掲載イメージが確認できます。AdType
広告のサイズを指定します。
管理画面での広告枠の設定に合わせてください。
SP、LARGE、RECT、TABLET、FREEのいずれかの値となります。
(SP:320x50、LARGE:320x100、RECT:300x250、TABLET:728×90)X
広告のx座標です。iOSのみ有効です。
単位はiOSにおける座標系に従います。Y
広告のy座標です。iOSのみ有効です。
単位はiOSにおける座標系に従います。IsIOSEasyPosition
iOSにおいてHorizontal、Verticalでの位置指定を行う場合はこれにtrueを設定してください。
※iOSのHorizontal、Verticalによる位置指定は「現在の画面向き」での指定のため、回転の際に自動で調整はされません。Horizontal
広告の横位置です。
LEFT、CENTER、RIGHTのいずれかの値となります。
IsIOSEasyPositionを設定しない場合はAndroidのみ有効です。Vertical
広告の縦位置です。
TOP、BOTTOM、CENTERのいずれかの値となります。
IsIOSEasyPositionを設定しない場合はAndroidのみ有効です。Scale
広告の表示倍率です(1.0:等倍)。
表示領域自体はAdTypeで指定した値となります。MessageObjName
イベント発生時にメッセージを受け取るGameObject名を指定します。
メッセージを受け取らない場合は空のままにしておいてください。Margin
広告に余白をpx値で指定します。
配列に左、上、右、下の順で格納してください。
iOSはisIOSEasyPosition
がtrue
の場合のみ適用されます。※縦横ともに「広告幅+余白」が画面幅よりも大きいと表示の崩れが発生します。ご注意ください。
Width/Height
AdTypeにFREEを指定した場合は設定してください。
# 広告の表示と終了
ADGUnitySDKクラスのinitADGメソッドを呼び出すと広告の表示が行われます。
本メソッドを1度実行いただけば全画面に広告が表示されます。
本メソッドは1度のみの実行とし、複数回呼ばないようにご注意ください。
ADGUnitySDK.initADG();
アプリの終了時にはfinishADGメソッドを呼ぶ必要があります。
アプリ終了時以外には呼び出さないでください。
ADGUnitySDK.finishADG();
広告の表示確認は必ず実機で行ってください。
# その他メソッド
canCallADG
init処理が正常に完了しているかどうかをtrue/falseで返します。
falseの場合、ADGUnitySDKクラスへのメソッド呼び出しは無効となります。ADGUnitySDK.canCallADG();
loadADG
広告のロードを行います。
ADGUnitySDK.loadADG();
pauseADG
広告の更新を一時停止する。
ADGUnitySDK.pauseADG();
resumeADG
広告の更新の一時停止を解除する。
ADGUnitySDK.resumeADG();
hideADG
広告を非表示とする。
ADGUnitySDK.hideADG();
showADG
広告の非表示を解除する。
ADGUnitySDK.showADG();
changeLocationADG
広告の位置を変更する。
第1引数が横位置、第2引数が縦位置となります。
iOSの場合は座標の数値、Androidの場合は文字列での指定です。if(Application.platform == RuntimePlatform.IPhonePlayer){//iOS ADGUnitySDK.changeLocationADG( 10 , 300); } else if(Application.platform == RuntimePlatform.Android){//Android ADGUnitySDK.changeLocationADG("RIGHT" , "BOTTOM"); }
setDefaultLocationADG
広告を初期位置に戻す。
ADGUnitySDK.setDefaultLocationADG();
changeMarginADG
広告の余白を変更します。
配列に左、上、右、下の順で格納してください。
iOSはisIOSEasyPosition
がtrue
の場合のみ適用されます。ADGUnitySDK.changeMarginADG(new int[] {0, 0, 0, 30});
# メッセージの受け取り
MessageObjNameにGameObject名を指定した場合、イベント発生時に以下のメソッドが呼び出されます。
広告受信時
void ADGReceiveAd(string msg){ //広告受信時の処理を記述する }
広告レスポンス取得失敗
SDK連携で在庫切れが多いアドネットワークを接続する場合はこの中で広告のリロードを実装してください。
void ADGFailedToReceiveAd(string msg){ ADGUnitySDK.loadADG(); }
エラー多発
エラーが多発した場合に発生します。
表示可能なアドネットワークがない状況のため、本エラーから一定間隔おいて再度広告の取得をしてください。void ADGExceedErrorLimit(string msg){ //エラー時の処理を記述する }
ネットワーク不通
機内モード等でネットワーク接続されていないときに発生します。
本エラーから一定間隔おいて再度広告の取得をしてください。void ADGNeedConnection(string msg){ //エラー時の処理を記述する }
# 7. iOS用frameworkの追加
Assets/plugins/iOS/
にADG.xcframework
を追加してください。Assets/plugins/iOS/
にADG.framework/Resources/ADG-Resources.bundle
を追加してください。 (ADG-Resources.bundleの追加はv2.23.0以降不要です)Unity上でSDKを選択し、Platform settings > Framework dependencies から必要なFrameworkにチェックしてください。
必要なFrameworkはiOS SDK Getting Started / バナー広告からご確認ください。
Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、
TARGETS > アプリケーションスキーマ > Build Settings > Linking > Other Linker Flagsに-ObjCを追加してください。Unity 2019.3以降のバージョンでは、上記のフラグを
UnityFramework
のBuild Targetに対して設定を行ってください。
# Unity5以降でのARCについて
Unity5以降でiOS Pluginを導入した場合はXcodeにて下記設定が必要となります(ARCをOFFとするため)。
- TARGETSを選択
- Build Phasesを選択
- Compile Sourcesを選択
- ADGNI.mmを選択しCompiler Flagsに-fno-objc-arcを設定する。
# 同一アプリ内での複数広告の表示について
現在のSDKには複数広告を同時に表示するメソッドは用意されていません。
1アプリ内で複数広告の表示をする場合はお手数ですが以下の手順を踏んでください。
ADGUnitySDK.csを同一フォルダ内で複製し、適当な名前をつける。
複製したファイルを開いてクラス名をファイル名と合わせる。
たとえば新しいファイル名がADGUnitySDK2.csの場合は「ADGUnitySDK」を「ADGUnitySDK2」に一括置換する。新しいクラス名で通常通りに呼び出す。
//パラメーター設定省略 ADGUnitySDK2.initADG();
# テストモード
以下のように設定するとテストモードで動作します。FIVEなどのテスト広告表示ではこの設定が必要です。
ADGUnitySDK.IsEnableTest = true;
# 広告ローテーションに関する注意事項
バナー広告のローテーションを行なっている場合は、インタースティシャル、動画リワード広告を閉じた際のメッセージを取得したタイミングで
ADGUnitySDK.resumeADG
を実行してください。バナー広告のローテーションを行なっている場合は、画面復帰時、
ADGUnitySDK.resumeADG
を実行してください。
private void OnApplicationFocus(bool hasFocus)
{
if (hasFocus) ADGUnitySDK.resumeADG();
}