このガイドは、既にTapTap開発者アカウントを登録し、アプリを公開している開発者向けの内容です。TapTap独自の広告ネットワークをアプリに統合する方法を解説します。TapTapには様々な広告形式がありますが、ほとんどの広告はユーザーのクリックによって収益が発生します(バナー広告を除く)。本記事では、eCPMが最も高いリワードビデオ広告を例に、UnityプロジェクトへのTap ADN SDK統合プロセスを詳しく説明します。
1. SDKのダウンロードとプロジェクト設定
まず、TapTap開発者コンソールの広告ネットワークセクションにアクセスします。初回アクセス時には関連情報の入力と認証が必要です。認証後、対応するSDKをダウンロードし、Unityプロジェクトにインポートします。
本記事ではUnity 2020.3.45を使用しています。SDKドキュメントには対応するUnityバージョンとAndroid APIレベルの要件が記載されています。Unity 2020.3.15以前のバージョンを使用する場合はGradleの追加設定が必要ですが、ここではUnity 2020.3.15以降のバージョンにおける設定手順に焦点を当てます。
1.1 最小APIレベルの設定
プロジェクト設定で最小APIレベルを適切に設定します。
1.2 必要ファイルの生成と依存関係の追加
すべてのUnityバージョンで、いくつかのネイティブ依存ライブラリを追加する必要があります。Project Settings → Player → Android Tab → Publish Settings → Build で「Custom Main Gradle Template」にチェックを入れます。
生成されたファイル Assets/Plugins/Android/mainTemplate.gradle に以下の変更を適用します:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// 追加する依存ライブラリ - 開始
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.0.1'
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation "com.android.support:appcompat-v7:28.0.0"
implementation "com.android.support:support-annotations:28.0.0"
implementation "com.android.support:support-v4:28.0.0"
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'
// 追加する依存ライブラリ - 終了
// 以下の行はUnityのmainTemplate.gradleに元から含まれており、挿入位置の目安になります
// **DEPS**
}
すべてのUnityバージョンで、Android関連の権限を追加する必要があります。Project Settings → Player → Android Tab → Publish Settings → Build で「Custom Main Manifest」にチェックを入れます。
生成されたファイル Assets/Plugins/Android/AndroidManifest.xml に以下の変更を適用します:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<!-- TapAd 必須権限 - 開始 -->
<!-- TargetVersion 31以上の場合に必要な権限 -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<!-- 広告の位置情報取得(精度の高いターゲティング用) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- IMEI、シリアル番号、MEID、IMSI、ICCIDなどの情報取得。TargetSdkVersion 4以上で必要 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- TapAd 必須権限 - 終了 -->
<!-- TapAd オプション権限 - 開始 -->
<!-- ネットワーク状態情報の取得 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- インストール済みアプリリストの取得。Android 11以上でのみ必要 -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<!-- (targetVersion 31未満) デバイス名取得用 -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- アプリケーションインストールリクエストの許可 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<!-- TapAd オプション権限 - 終了 -->
...
</manifest>
2. アプリケーションの広告作成
流量管理メニューから広告を作成し、広告の表示回数と予測収益をリアルタイムで確認できます。
メディア管理:広告を掲載するアプリケーションを1つ以上作成し、リアルタイムでオン/オフを切り替えることができます。
「新規メディア作成」をクリックし、必要な情報を入力します。ここでは、テスト広告と本番広告の2種類を作成できます。テスト広告は本番広告と同様に読み込み・表示できますが収益は発生しません。ただし、実際には本番広告を作成してテストし、実機テストが完了した後に審査を提出することも可能です。
SHA1値はAndroid署名ファイルに関連します。ここではデフォルトの署名を使用しています。デフォルトのAndroid署名キーストアはdebug.keystoreです。SHA1値の取得方法については公式ドキュメントを参照してください。
本番広告を作成すると、メディア名、メディアID、メディアキーが生成されます。これらの重要なパラメータは後で使用します。
広告枠管理:各アプリケーションに必要な広告タイプを作成します。
ここでは必要な広告タイプと関連パラメータを設定します。作成された各広告には対応するIDが割り当てられ、このIDは後で使用します。コードから広告をリクエストする際には、作成したメディア(アプリ)IDと広告IDを使用して、どのアプリにどの広告を配信するかを指定します。
3. 広告リクエストの実装
広告の読み込みと表示に関する基本的なフローを理解しておくことが重要です:
初期化 → プライバシー権限のリクエスト → ユーザー行動の報告(オプション) → 広告の読み込み → 広告の表示
その後、広告の読み込みと表示を繰り返します。これら2つのプロセスは通常一緒に実装します。上記の広告実行フローには一定の順序があり、広告の初期化が完了する前に広告を読み込もうとするなどのエラーを避ける必要があります。広告のテストには実機を使用し、可能な限りエミュレータは避けてください。
Tap ADN Unity SDKをUnityプロジェクトにインポートすると、TapAdDemoというシーンが含まれています。このデモシーンのスクリプトはそのまま使用できます(使用前には必ずスクリプトをよく読み、ロジックを理解してください)。
public void InitializeTapAd()
{
TapAdConfig configuration = null;
ICustomController controller = null;
configuration = new TapAdConfig.Builder()
.MediaId(yourMediaId) // 必須パラメータ:TapADNに登録したメディアID
.MediaName(yourMediaName) // 必須パラメータ:TapADNに登録したメディア名
.MediaKey(yourMediaKey) // 必須パラメータ:メディアキー(データ復号化用)
.MediaVersion("1") // 必須パラメータ:デフォルト値は"1"
.Channel(yourChannel) // 必須パラメータ:チャネル
.TapClientId(yourTapClientId) // オプションパラメータ:TapTap開発者センターのゲームClient ID
.EnableDebugLog(false) // オプションパラメータ:デバッグログの出力設定
.Build();
controller = new FormalCustomControllerWrapper(this);
TapAdSdk.Init(configuration, controller);
statusText.text = "初期化完了";
}
指定されたパラメータを入力します。ここで言及していないTapClientIdは、アプリの「ゲームサービス」→「アプリ設定」で確認できます。
この手順で広告を掲載するアプリケーションを紐付けました。次に、具体的な広告タイプを紐付けます。リワードビデオ広告の場合、テンプレートのリワード広告IDを自身のIDに置き換えます。これで広告リクエストの準備が整いました。適切なタイミングで広告読み込みプロセスを実行し、その後は読み込みと表示を繰り返すだけです。
広告の初期化、ユーザー権限のリクエスト、ユーザー行動の報告(オプション)、リワードビデオ広告の読み込みを順番に実装します。
広告読み込み完了時にはコールバックがあるため、広告の読み込みと表示を一緒に実装することで、広告の読み込みが完了する前に表示メソッドが実行される問題を防ぎます。
リワード広告の表示にもコールバックメソッドがあります。必要な場所に実行したいコールバックメソッドを追加します。リワードビデオ広告の報酬は、広告の再生が正常に完了した後に付与されます。
上記の広告読み込みフローを正しい順序で実行し、実機でテストします。テストツールで広告の表示データを確認できます。
最後に、広告の実装に関する考察を述べます。広告の種類やユーザーに提示する方法は重要です。バナー広告はアプリケーションを安っぽく見せることがあり、不意のポップアップ広告はユーザーの好感度を下げる可能性があります。どの位置でどのような方法でどの広告を実装するかは慎重に検討する必要があります。プロジェクト開発の段階で広告機能を計画しておくことさえ重要です。