TJPlacementクラスにプレイスメント名を指定して初期化してインスタンスを作成します。 コードで指定するプレイスメント名がダッシュボードのプレイスメント名と完全に一致するようにして下さい。 また、デリゲートを実装してコールバックを受け取れます(以下で説明します)。
TJPlacement p = TJPlacement.CreatePlacement("APP_LAUNCH");
コンテンツをリクエストします。
if (Tapjoy.IsConnected()) {
p.requestContent();
} else {
Debug.LogWarning("コンテンツをリクエストする前に Tapjoy SDK の初期化が終了している必要があります。");
}
注: コンテンツをリクエストする前に、Tpajoy connectコールが成功しているようにして下さい。 onConnectSuccess コールバックを受ける前にコンテンツをリクエストしないようにして下さい。
良好なユーザー体験を実現するために、ユーザーへコンテンツを表示する時点に先立って コンテンツをリクエストして下さい。 例えば、アプリのメインメニューのボタンでプレイスメントを呼び出す場合、アプリケーションを起動しTapjoy connectが成功した直後にプレイスメントをリクエストした方が良いでしょう。ボタンを押すまでコンテンツをリクエストしない場合、ユーザーはコンテンツがロードされるまでロード中の画面を見る事になります。特に広告の場合、こうした待ち時間があるとユーザーは広告への興味が薄れ、結果としてマネタイズが悪くなる結果となります。
プレイスメント関連の様々なステータスのフィードバックを受けるには、次のコールバックを実装して下さい:
TJPlacement.OnRequestSuccess += HandlePlacementRequestSuccess;
...
public void HandlePlacementRequestSuccess(TJPlacement placement) {
...
}
TJPlacement.OnRequestFailure += HandlePlacementRequestFailure;
...
public void HandlePlacementRequestFailure(TJPlacement placement, string error) {
}
TJPlacement.OnContentReady += HandlePlacementContentReady;
...
public void HandlePlacementContentReady(TJPlacement placement) {
// This gets called when content is ready to show.
}
TJPlacement.OnContentShow += HandlePlacementContentShow;
...
public void HandlePlacementContentShow(TJPlacement placement) {
...
}
TJPlacement.OnContentDismiss += HandlePlacementContentDismiss;
...
public void HandlePlacementContentDismiss(TJPlacement placement) {
...
}
コンテンツを実際に表示するには、 p.ShowContent();
を使用します。
コンテンツが表示可能になっているか、ShowContent() を呼ぶ前にチェックして下さい:
if (p.IsContentReady()) {
p.ShowContent();
} else {
// コンテンツが表示可能でない場合の処理
}
注: 動画を含む可能性のあるプレイスメントを表示する最には、アプリの音をミュートするようにして下さい。 動画とアプリの音が衝突する可能性があるからです。
通常、HandlePlacementContentReady コールバックが呼ばれるまでユーザーにコンテンツを見せるのを待つべきです。そうすれば、コンテンツが実際に表示される事が分かりますし、ユーザーに遅延なくコンテンツを表示できます。 また、上記の例にあるように*p.IsContentReady()*が真となるかをチェックする、という方法で同様の効果を得られます。
NB: プレイスメントオブジェクトを作成する前に、Tpajoy connectコールが成功しているようにして下さい。
プレイスメントのコンテンツをユーザーに表示した後、次に同じプレイスメントのコンテンツを表示する場合にはコンテンツのリクエストを再度行う必要が(つまり、p.RequestContent(); を再度呼び出す)あります。単純に p.ShowContent(); を再度呼び出すだけではだめで、コンテンツリクエストを再度呼び出す前に行った場合にはshow contentは失敗します。
動画を表示するコンテンツの場合、再リクエストを行うタイミングはコンテンツ表示が行われたすぐ後です。これにより、動画再生中に次の動画をプリロードしておく事が可能となります。コンテンツの表示終了まで再リクエストを送らせた場合、ユーザーがすぐに動画を観ようとした場合に待ち時間が発生してしまいます。
アイテム販促 や アナウンスメント コンテンツでは、アプリに表示するコンテンツで指定した値を受け取るコードを書く必要があります。例えば、ボーナス コンテンツはユーザーに渡すアイテム名(文字列)とアイテム数(Integer)を指定しています。この値を受け取り、実際にユーザーにボーナスの付与処理を行う処理はアプリが行う必要があります。次のデリゲート メソッドはこうした特別なコンテンツを処理するためにあります:
TJPlacement.OnPurchaseRequest += HandleOnPurchaseRequest;
...
public void HandleOnPurchaseRequest(TJPlacement placement, TJActionRequest request, string productId) {
//ユーザーがアイテム販促コンテンツでボタンをクリックするとコールされます。アイテムのIAPを行う処理をここに書きます。
...
}
TJPlacement.OnRewardRequest += HandleOnRewardRequest;
...
public void HandleOnRewardRequest(TJPlacement placement, TJActionRequest request, string itemId, int quantity) {
//ユーザーがボーナスコンテンツをクローズするとコールされる
...
}
注: HandleOnRewardRequest はTapjoy 広告による還元には使用されません。このメソッドはボーナス コンテンツの場合にのみ使用されます。
各プレイスメントの "呼びだし地点" を Tapjoy に伝えられるようになりました。次のプリセット値から選択できます:
TJEntryPoint.UNKNOWN
TJEntryPoint.OTHER
TJEntryPoint.MAIN_MENU
TJEntryPoint.HUD
TJEntryPoint.EXIT
TJEntryPoint.FAIL
TJEntryPoint.COMPLETE
TJEntryPoint.INBOX
TJEntryPoint.INIT
TJEntryPoint.STORE
呼びだし地点 はプレイスメントオブジェクトを作成した後、コンテンツをリクエストする前に設定します:
TJPlacement placement = TJPlacement.CreatePlacement("placementName");
placement.SetEntryPoint(TJEntryPoint.COMPLETE);