Unity Level Play + Tapjoy オファーウォール 実装・移行ガイド

  1. まず、ironSource Tapjoyアダプタを実装します。ironSource mediation manager ウインドウでプロジェクトに追加できます。

  2. 次に、Tapjoy Unity Pluginを追加します。これによりC#コードからTapjoy SDKのメソッドにアクセスできるようになります。 プラグイン をダウンロードし、Unityプロジェクトに追加します。

Tapjoy Unity Plugin は External Dependency Manager を使用してTapjoy iOS SDKのコピーをインストールし、Tapjoy Android SDKのコピーをインクルードします。しかし手順1でアダプタを追加する際にSDKも既に追加されてしまっているため、追加のSDKのコピーは必要ありません(ブリッジコードのみを使いたい)。/Assets/Tapjoy/Editor にある TJPluginDependencies ファイルを編集して、iOSの参照を削除し、Android Unity Bridge のみを含むようにします。ファイルの中身を次の内容で置き換えます:

<dependencies>
<androidPackages>
    <repositories>
      <repository>https://sdk.tapjoy.com</repository>
    </repositories>
    <androidPackage spec="com.tapjoy:tapjoy-android-unitybridge:12.11.1@aar"/>
  </androidPackages>
</dependencies>
  1. ブリッジコードが入ったため、Level Play を通じたTapjoy動画の利用だけでなく、Tapjoy SDKの機能を直接呼び出せるようになり、Tapjoy のオファーウォールの表示もできるようになります。まず、Tapjoyをアプリのクラスにインポートします:
import TapjoyUnity
  1. 次に、Tapjoy SDKを初期化します。初期化が成功(または失敗)するとコールバックが呼ばれます。成功のコールバックが呼ばれるまでは、Tapjoy SDKのどのような機能の呼び出しもしないで下さい。 初期化の際に、Tapjoyオファーウォールを使用するユーザーのユーザーIDを TJC_OPTION_USER_ID コネクトオプションを使用して指定します。ここで指定したユーザーIDは、成果達成時のコールバックの際に送信されるパラメータとして通知されます。必ずユーザーの識別が可能なIDを指定するようにして下さい。
Dictionary<string,string> connectFlags = new Dictionary<string,string>();
connectFlags.Add("TJC_OPTION_USER_ID", "<USER_ID_HERE>");

#if UNITY_ANDROID
  Tapjoy.Connect("your_android_sdk_key", connectFlags);
#elif UNITY_IOS
  Tapjoy.Connect("your_ios_sdk_key", connectFlags);
#endif
  1. 次に、プレイスメント オブジェクトとリスナーを作成します(リスナーについては手順7で詳説します)。プレイスメントはTapjoyダッシュボード上で設定し、オファーウォール コンテンツカードを含むようにして下さい。この例では、プレイスメント名を ‘Offerwall’ としたものと想定しています。実際には好きな名称を付けて良いのですが、コード内の名前はダッシュボードのものと完全に一致させなくてはなりません。
TJPlacement placement = TJPlacement.CreatePlacement("Offerwall");
  1. これでプレイスメントにリクエストをする準備ができました。リクエストによりプレイスメントの読み込みが始まるため、表示を行うまでに準備がととのいます。オファーウォールのプレイスメントは通常素早く読み込まれますが、オファーウォールを表示する時点よりも前もってリクエストをする事をおすすめします。
placement.requestContent();
  1. 下記の各種コールバックを実装して下さい。
TJPlacement.OnRequestSuccess += HandlePlacementRequestSuccess;
TJPlacement.OnRequestFailure += HandlePlacementRequestFailure;
TJPlacement.OnContentReady += HandlePlacementContentReady;
TJPlacement.OnContentShow += HandlePlacementContentShow;
TJPlacement.OnContentDismiss += HandlePlacementContentDismiss;

ironSourceのオファーウォールを実装されている場合、これらのいくつかのコールバックは実装済みのもので置き換えられます。カスタムコードのTapjoyコールバックへの移植を容易にするために、下記のテーブルにコールバックの対応を示します:

ironSource Callback Tapjoy Callback
onOfferwallClosedEvent OnContentDismiss
onOfferwallOpenedEvent OnContentShow
onOfferwallAvailableEvent OnContentReady

OnRequestSuccess はコンテンツのリクエストの応答がTapjoyのサーバからあった場合に呼ばれます。 OnContentReady はコンテンツ(オファーウォール)が表示できるようになったときに呼ばれます。 この時点でオファーウォールを表示しても良いですし、必要時に表示可能というフラグを立てる事もできます。

  1. オファーウォールのプレイスメントを表示するには、コンテンツが表示可能かをチェックし、 showContent を呼びます:
if (placement.IsContentReady()) {
  placement.ShowContent();
}

ironSourceのオファーウォールをご利用の場合は以下の実装部分を置き換えられます:

IronSource.Agent.showOfferwall();
  1. ユーザーがオファーウォールを閉じた場合、コンテンツを再度リクエストします。同じプレイスメントを複数回呼び出す事はできません。 OnContentDismiss cコールバックでプレイスメントをリクエストする事をおすすめします。これにより、ユーザーが次にリクエストする時点で再度表示が可能になります。

  2. ironSourceオファーウォールをご利用の場合、その他のironSourceオファーウォールのコードを削除可能です。

プライバシー

ironSource LevelPlay をご利用の場合、LevelPlay API を使用して Tapjoy に下記のプライバシー フラグ を伝達できます:

  1. GDPR 同意
  2. USの週によるプライバシー関連法律に基づく、個人情報の売買または共有のオプトアウト
  3. 特定のエンドユーザーを子供としてフラグ付けをする。 注意: COPPA の元でアプリの主要なユーザーが子供である場合には、すべてのエンドユーザーを子供としてフラグ付けする必要があります。

また、アプリが Google Play の "Designed for Families" プログラムに入っている場合、または Google Play の "Family" セクションに表示される場合、アプリの全てのユーザーを子供としてフラグ付けをし、Tapjoy SDK の この API を使用してユーザーのGAIDを収集しないようにして下さい。

ironSrouce LevelPlay をご利用でない場合や、Tapjoy SDK を個別に設定した場合は、Tapjoy に適切なプライバシーフラグを伝えるために これらのガイドライン をご参照ください。