カスタム イベントを使用すると、 Ad Manager 他の第三者広告ネットワーク用にウォーターフォール メディエーションを追加する サポートされている広告ネットワーク このガイドでは、Android 向けに作成された既存のカスタム イベントと、 Unity プロジェクトでのみです。
前提条件
スタートガイドの手順を完了します。Unity アプリに Google Mobile Ads Unity プラグインがインポートされている必要があります。
Android と iOS 向けにあらかじめ作成されたカスタム イベント アダプタ。カスタム の詳細については、カスタム イベント ガイドをご覧ください。 Android 、 iOS。
カスタム イベントを定義する
カスタム イベントをメディエーションに参加させるには、カスタム イベントが次の条件を満たしている必要があります。 ウェブ インターフェースで Ad Manager 定義します。 カスタム イベントを Android と iOS のメディエーション グループ。
パラメータの入力方法 | |
---|---|
クラス名(iOS) |
iOS の場合は、カスタム イベントを実装するクラスの名前を入力します。 クラスを Swift で実装する場合は、クラス名の先頭に
アプリまたはフレームワーク モジュールの名前(
プロジェクトに複数のターゲットがある場合や、
プロジェクト名はターゲット名とは異なります。ターゲット名を使用すると、
|
クラス名(Android) | Android の場合は、Class Name に指定する値が次のとおりであることを確認します。
Android の完全修飾クラス名(例: com.google.ads.mediation.sample.customevent.SampleCustomEvent )。
|
ラベル | イベントの一意の名前を入力します。 |
パラメータ | カスタム イベントに文字列引数を渡す場合、たとえば 指定します。 |
カスタム イベント ライブラリをインポートする
カスタム イベントを機能させるには、追加のライブラリの追加が必要になる場合があります 確認します。たとえば、次のライブラリのインクルードが必要になることがあります。
- Android サードパーティ SDK
- Android の第三者カスタム イベント
- iOS 第三者広告 SDK
- iOS の第三者カスタム イベント
ライブラリの種類
Android または iOS のコードを Unity プロジェクトにインポートする方法は複数あります。 例:
- External Dependency を使用してビルド済みの Android または iOS アーティファクトをインポートする Unity 用マネージャー
- AAR プラグインと Android ライブラリをインポートする
- Java と Kotlin のソースファイルをインポートする
- iOS ソースファイルと静的ライブラリをインポートする
使用するライブラリのパッケージ化方法によっては、 インポート戦略を指定します。各オプションについては、後で詳しく説明します。
(推奨)ビルド済みの Android または iOS アーティファクトをインポートする
External API を使用して、Maven または CocoaPods からビルド済みのアーティファクトをインポートする Dependency Manager for Unity。 このプラグインは、GoogleMobileAds プラグインに含まれています。
既存のアーティファクトをインポートするには、構成ファイルを作成して インポートします。ファイル名とパスには次の要件があります。
- このファイルは
/Editor/
フォルダ内に存在する必要があります。 - ファイル名は
Dependencies.xml
で終わる必要があります。
たとえば、架空の広告ネットワーク用にカスタム イベントのアダプタをインポートする場合、
AdPub
という名前で次のファイルを作成します。
Assets/AdPub/Editor/AdPubDependencies.xml
次に、AdPubDependencies.xml
ファイル内で依存関係を定義します。ルール
設定方法については、このモジュールの
Unity 用 External Dependency Manager を入手する
Started(開始)。「
Android と iOS の SDK とカスタム イベントを含むコード スニペット
(例: 仮の「AdPub」用)のライブラリあります
Assets/AdPub/Editor/AdPubDependencies.xml
<dependencies>
<androidPackages>
<androidPackage spec="com.adpub.android:adpub-sdk:1.0.0" />
<androidPackage spec="com.adpub.android:adpub-custom-event:1.0.0">
<repositories>
<repository>https://repo.maven.apache.org/maven2/</repository>
<repository>https://dl.google.com/dl/android/maven2/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="AdPubSDK" version="1.0" />
<iosPod name="AdPubCustomEvent" version="1.0">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
カスタム イベント アーティファクトが必要な広告とすでに依存関係がある場合 SDK の依存関係を明示的に定義する必要はありません。 例
External Dependency Manager は構成の変更を自動的にモニタリングします 依存関係を解決します 次のコマンドを実行します。
Assets > External Dependency Manager > Android Resolver > Force Resolve
AAR プラグインと Android ライブラリをインポートする
Unity は、*.aar
ファイルと Android ライブラリ プロジェクトのインポートをサポートしています。条件
(AAR プラグインと Android
ライブラリをご覧ください。
それらのファイルを Unity プロジェクトに含める方法を確認します。
Java と Kotlin のソースファイルをインポートする
Unity 2018.2 以降で、Android カスタム イベント コードが
コンパイルされていない *.java
または *.kt
ファイルがある場合は、Java または Kotlin のソースファイル
使用しないでください。
iOS ソースファイルと静的ライブラリをインポートする
Unity は、*.framework
アーティファクト、*.h
、*.m
ソースファイルをサポートしています。インポート中
iOS のアーティファクトとソースファイルについては、Unity のネイティブ
プラグインです。
広告インスペクタでカスタム イベントをテストする
広告インスペクタを使用すると、 カスタム イベントがアプリケーションに正しくインポートされていることを確認します。広告 インスペクタはジェスチャーだけで開くことも、最小限のコードでプログラムによって開くこともできます。
(省略可)C# スクリプトからサードパーティ SDK のネイティブ メソッドを呼び出す
第三者広告ネットワーク SDK には特別な要件があり、 Android または iOS のメソッドを直接呼び出すことができます。これらのメソッドを呼び出すプロセスは、 直接次のとおりです。
- プラットフォーム クライアントの共通インターフェースを定義する
- サポートされていないプラットフォーム用のデフォルト クライアントを実装する
- Android メソッドを呼び出すための Android クライアントを実装する
- iOS メソッドを呼び出すための iOS クライアントを実装する
- クライアント factory を、条件付きで iOS クライアントと Android クライアントを切り替える
- 第三者広告ネットワーク SDK のすべての機能にアクセスするための API を定義する
次のセクションでは、これらのステップを 「AdPub」という広告ネットワークです(Android のメソッドを呼び出せる C# API) iOS:
Android
package com.adpub.android;
public class AdPubSdk
{
public static void setHasUserConsent(boolean hasUserConsent);
}
iOS
@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end
プラットフォーム クライアントの共通インターフェースを定義する
基盤となるインフラストラクチャを IAdPubClient
Android と iOS の API。
Assets/AdPub/Common/IAdPubClient.cs
namespace AdPub.Common
{
public interface IAdPubClient
{
///<summary>
/// Sets a flag indicating if the app has user consent for advertisement.
///</summary>
void SetHasUserConsent(bool hasUserConsent);
}
}
サポートされていないプラットフォーム用のデフォルト クライアントを定義する
IAdPubClient
インターフェースを実装する DefaultClient
クラスを作成します。
メソッド名のみをログに記録しますこの実装は、Unity エディタと
プラットフォーム(Android または iOS 以外)に対応しています。
Assets/AdPub/Common/DefaultClient.cs
namespace AdPub.Common
{
public class DefaultClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
Debug.Log("SetHasUserConsent was called.");
}
}
}
iOS プラットフォーム クライアントを実装する
IAdPubClient
インターフェースを実装する iOSAdPubClient
クラスを作成します。
iOS。この実装では、
呼び出す InteropServices
iOS の AdPubSdk
クラスの setHasUserConsent()
メソッド
Assets/AdPub/Platforms/iOS/iOSAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on iOS.
#if UNITY_IOS
// Reference InteropServices to include the DLLImportAttribute type.
using System.Runtime.InteropServices;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class iOSAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
GADUAdPubSetHasUserConsent(hasUserConsent);
}
[DllImport("__Internal")]
internal static extern void GADUAdPubSetHasUserConsent(bool hasUserConsent);
}
}
#endif
次に、定義された GADUAdPubSetHasUserConsent()
メソッドを実装します。
ご覧ください。C
メソッドで AdPubClientBridge.m
を作成する
GADUAdPubSetHasUserConsent()
を使用して Unity からのメソッド呼び出しを処理し、
AdPubSDK
。
AdPubClientBridge
は iOS ソースファイルであり、
Plugins/iOS
フォルダ(Unity のネイティブ ガイドを参照)
プラグインです。
Assets/AdPub/Plugins/iOS/AdPubClientBridge.m
#import <AdPubSDK/AdPubSDK.h>
void GADUAdPubSetHasUserConsent(BOOL hasUserConsent) {
[AdPubSDK setHasUserConsent:hasUserConsent];
}
Android プラットフォーム クライアントを実装する
IAdPubClient
インターフェースを実装する AndroidAdPubCient
クラスを作成します。
Android。この実装では、 Android Java ヘルパーを使用しています。
クラス
Android 静的メソッド setHasUserConsent()
を呼び出します。
Android の Java ヘルパークラスは、Android Studio でのみ利用可能であり、
UNITY_ANDROID
コンパイラを使用することで、コンパイル エラーを防止できます。
ディレクティブを使用して、
置き換えます。代わりに、アセンブリ
定義
Unity 2017.4 以降でこの問題を解決できます。
Assets/AdPub/Platforms/Android/AndroidAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on Android.
#if UNITY_ANDROID
// Reference the UnityEngine namespace which contains the JNI Helper classes.
using UnityEngine;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class AndroidAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
// Make a reference to the com.adpub.AdPubSDK.
AndroidJavaClass adPubSdk = new AndroidJavaClass("com.adpub.AdPubSdk");
// Call the native setHasUserConsent method of com.adpub.AdPubSDK.
adPubSdk.CallStatic("setHasUserConsent", hasUserConsent);
}
}
}
#endif
正しいクライアント実装を返すファクトリ メソッドを作成する
各プラットフォームのクライアントを実装したので、次は
AdPubClientFactory
クラスを使用して、
IAdPubClient
インターフェース(ランタイム プラットフォームによって異なります)。このクラスで使用する
コンパイラ
ディレクティブを
正しいクライアントをIAdPubClient
返します。
Assets/AdPub/Common/AdPubClientFactory.cs
namespace AdPub.Common
{
public class AdPubClientFactory
{
// Return the correct platform client.
public static IAdPubClient GetClient()
{
#if !UNITY_EDITOR && UNITY_ANDROID
return new AdPub.Platforms.Android.AndroidAdPubClient();
#elif !UNITY_EDITOR && UNITY_IOS
return new AdPub.Platforms.iOS.iOSAdPubClient();
#else
// Returned for the Unity Editor and unsupported platforms.
return new DefaultClient();
#endif
}
}
}
インターフェース メソッドごとに公開 API を定義する
各クライアント メソッドのメソッド呼び出しを持つ AdPubApi
クラスを
IAdPubClient
インターフェース。このクラスは、AdPubClientFactory
を使用して
IAdPubClient
のインスタンスを作成し、基になる SDK のためにそのクライアントを呼び出します。
サポートしています。
Assets/AdPub/AdPubApi.cs
using AdPub.Common;
namespace AdPub
{
public class AdPubApi
{
private static readonly IAdPubClient client = GetAdPubClient();
// Returns the correct client for the current runtime platform.
private static IAdPubClient GetAdPubClient()
{
return AdPubClientFactory.GetClient();
}
// Sets the user consent using the underlying SDK functionality.
public static void SetHasUserConsent(bool hasUserConsent)
{
client.SetHasUserConsent(hasUserConsent);
}
}
}
新しく定義した API を呼び出す
上で定義した API を呼び出す方法は次のとおりです。
Assets/Scripts/AdPubController.cs
using UnityEngine;
using AdPub;
public class AdPubController : MonoBehaviour
{
// TODO: Get consent from the user and update this userConsent field.
public bool userConsent;
// Called on startup of the GameObject it's assigned to.
public void Start()
{
// Pass the user consent to AdPub.
AdPubApi.SetHasUserConsent(userConsent);
}
}
その他の第三者広告ネットワーク アダプタの例
Google Mobile Ads Unity Plugin GitHub にアクセス リポジトリ で、C# API を実装する第三者メディエーション アダプタのその他の例をご確認ください。 iOS と Android のメソッドの呼び出しをラップします。