#import <Tapjoy/TJPlacement.h>
TJPlacementクラスにプレイスメント名を指定して初期化してインスタンスを作成します。 コードで指定するプレイスメント名がダッシュボードのプレイスメント名と完全に一致するようにして下さい。 また、デリゲートを実装してコールバックを受け取れます(以下で説明します)。
TJPlacement *p = [TJPlacement placementWithName:@"Main Menu" delegate:self];
最後に、コンテンツをリクエストします。
[p requestContent];
注: コンテンツをリクエストする前に、Tpajoy connectコールが成功しているようにして下さい。 TJC_CONNECT_SUCCESS通知を受ける前にコンテンツをリクエストしないようにして下さい。
良好なユーザー体験を実現するために、ユーザーへコンテンツを表示する時点に先立って コンテンツをリクエストして下さい。 例えば、アプリのメインメニューのボタンでプレイスメントを呼び出す場合、アプリケーションを起動しTapjoy connectが成功した直後にプレイスメントをリクエストした方が良いでしょう。ボタンを押すまでコンテンツをリクエストしない場合、ユーザーはコンテンツがロードされるまでロード中の画面を見る事になります。特に広告の場合、こうした待ち時間があるとユーザーは広告への興味が薄れ、結果としてマネタイズが悪くなる結果となります。
コンテンツリクエストのステータスのフィードバックを得るには、下記の TJPlacementDelegate のメソッドを実装します。:
- (void)requestDidSucceed:(TJPlacement*)placement{} // プレイスメント送信自体が成功した時にコールされます。表示する広告の有無ではありません。
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{} //コンテンツが表示可能になって時にコールされます。
- (void)contentDidAppear:(TJPlacement*)placement{}
- (void)contentDidDisappear:(TJPlacement*)placement{}
[p showContentWithViewController: nil];
注: showContentWithViewController に 'nil' を指定した場合、Tapjoy SDK は広告を表示するためにViewControllerを作成します。 ほとんどの場合これが安全な表示の仕方です。 アプリが複雑なビュー階層でできており、何らかの理由により表示を自分自身で管理したいという場合には、showContentWithViewController に作成したViewControllerを指定できます。このメソッドに渡すViewControllerは、最上位にあり他のviewに隠されておらず、またTapjoyコンテンツが閉じるまで他のviewがかぶらない物である必要があります。
showを呼び出す前に、コンテンツの表示準備ができているか確認するようにして下さい:
if (p.isContentReady) {
[p showContentWithViewController: nil];
}
else {
//handle situation where there is no content to show, or it has not yet downloaded.
}
NB: 動画を含む可能性のあるプレイスメントを表示する最には、アプリの音をミュートするようにして下さい。 動画とアプリの音が衝突する可能性があるからです。
通常、contentIsReady コールバックが呼ばれるまでユーザーにコンテンツを見せるのを待つべきです。そうすれば、コンテンツが実際に表示される事が分かりますし、ユーザーに遅延なくコンテンツを表示できます。 また、上記の例にあるようにp.isContentReadyが真となるかをチェックする、という方法で同様の効果を得られます。
プレイスメントのコンテンツをユーザーに表示した後、次に同じプレイスメントのコンテンツを表示する場合にはコンテンツのリクエストを再度行う必要が(つまり、[p requestContent]; を再度呼び出す)あります。単純に [p showContentWithViewController: self]; を再度呼び出すだけではだめで、コンテンツリクエストを再度呼び出す前に行った場合にはshow contentは失敗します。
アイテム販促 や アナウンスメント コンテンツでは、アプリに表示するコンテンツで指定した値を受け取るコードを書く必要があります。例えば、ボーナス コンテンツはユーザーに渡すアイテム名(文字列)とアイテム数(Integer)を指定しています。この値を受け取り、実際にユーザーにボーナスの付与処理を行う処理はアプリが行う必要があります。
次の TJActionRequestDelegate メソッドが、コンテンツが指定する情報がある場合に呼ばれます:
- (void)placement:(TJPlacement*)placement didRequestPurchase:(TJActionRequest*)request productId:(NSString*)productId {
//ユーザーがアイテム販促コンテンツでボタンをクリックするとコールされる
//アイテムのIAPを行う処理をここに書きます。
}
- (void)placement:(TJPlacement*)placement didRequestReward:(TJActionRequest*)request itemId:(NSString*)itemId quantity:(int)quantity {
//ユーザーがボーナスコンテンツをクローズするとコールされる
//ユーザーにアイテムを付与する処理をここに書きます。
}
TJEntryPointUnknown //Not set, but removes any value that was already set
TJEntryPointOther
TJEntryPointMainMenu
TJEntryPointHud
TJEntryPointExit
TJEntryPointFail
TJEntryPointComplete
TJEntryPointInbox
TJEntryPointInitialisation
TJEntryPointStore
呼びだし地点 はプレイスメントオブジェクトを作成した後、コンテンツをリクエストする前に設定します:
TJPlacement *placement = [TJPlacement placementWithName:@"myPlacement" delegate:nil];
[placement setEntryPoint:TJEntryPointMainMenu];
[placement requestContent];