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

  1. まず、ironSource Tapjoyアダプタを実装します。 podfile に下記のようにアダプタを記述します:
pod 'IronSourceTapjoyAdapter','4.1.23.1'

最新のアダプタバージョンは こちらをご参照ください。

  1. アダプタにはTapjoy SDKが含まれます。このため、Level Play を通じたTapjoy動画の利用だけでなく、Tapjoy SDKの機能を直接呼び出せるようになり、Tapjoy のオファーウォールの表示もできるようになります。まず、Tapjoyをアプリのクラスにインポートします:
#import <Tapjoy/TJPlacement.h>
  1. 次に、Tapjoy SDKを初期化します。初期化が成功(または失敗)するとコールバックが呼ばれます。成功のコールバックが呼ばれるまでは、Tapjoy SDKのどのような機能の呼び出しもしないで下さい。 初期化の際に、Tapjoyオファーウォールを使用するユーザーのユーザーIDを TJC_OPTION_USER_ID コネクトオプションを使用して指定します。ここで指定したユーザーIDは、成果達成時のコールバックの際に送信されるパラメータとして通知されます。必ずユーザーの識別が可能なIDを指定するようにして下さい。
NSDictionary *connectFlags = @{TJC_OPTION_USER_ID : @"<USER_ID_HERE>"};
[Tapjoy connect:@"TJ_SDK_KEY" options:connectFlags];
    
- (void)tjcConnectSuccess:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect succeeded");
}

- (void)tjcConnectFail:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect failed");
}
  1. 次に、プレイスメント オブジェクトを作成します。プレイスメントはTapjoyダッシュボード上で設定し、オファーウォール コンテンツカードを含むようにして下さい。この例では、プレイスメント名を 'Offerwall' としたものと想定しています。実際には好きな名称を付けて良いのですが、コード内の名前はダッシュボードのものと完全に一致させなくてはなりません
TJPlacement *placement = [TJPlacement placementWithName:@"Offerwall" delegate:self];
  1. これでプレイスメントにリクエストをする準備ができました。リクエストによりプレイスメントの読み込みが始まるため、表示を行うまでに準備がととのいます。オファーウォールのプレイスメントは通常素早く読み込まれますが、オファーウォールを表示する時点よりも前もってリクエストをする事をおすすめします。
[p requestContent];
  1. 下記の各種コールバックを実装して下さい。
- (void)requestDidSucceed:(TJPlacement*)placement{}
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{}
- (void)contentDidAppear:(TJPlacement*)placement{} 
- (void)contentDidDisappear:(TJPlacement*)placement{}

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

ironSource Callback Tapjoy Callback
offerwallDidShow contentDidAppear
offerwallDidClose contentDidDisappear
offerwallHasChangedAvailability contentIsReady

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

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

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

[IronSource showOfferwallWithViewController:UIViewController];

showContent メソッドはビューコントローラを引数に取ります。この引数には nilを渡してTapjoy SDKにビューコントローラを作らせる事をおすすめします。ほとんどの場合、これがもっとも安全な方法です。複雑なビュー階層を持っていて表示を自身で制御したい場合、このメソッドに渡すビューコントローラは最上位で他のビューに隠されていないもので、Tapjoyコンテンツが閉じられるまで他のビューが上に表示されないものである事がきわめて重要です。

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

  2. ironSourceオファーウォールをご利用の場合、その他のironSourceオファーウォールのコードを削除可能です。例えば下記のようなコードです:

[IronSource setOfferwallDelegate:yourOfferwallDelegate];

また、Tapjoyのオファーウォールに移植されなかったコールバックも削除可能です。ironSource SDKの初期化で @[IS_OFFERWALL] を指定している場合、この引数も削除可能です。

プライバシー

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

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

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