SDK

1. プレイスメントをリクエストする

プレイスメントを呼び出すには、TJPlacement クラスを使用します。引数のプレイスメント名は、ダッシュボードで指定したプレイスメント名と完全に同じものを指定するように注意してください:

java
// 現在のアクティビティを指定する。Tapjoy セッション トラッキング を使用している場合、または minSdkVersion>14
//	の場合には、この指定はしなくても良い 
Tapjoy.setActivity(activity);

TJPlacementListener placementListener = this;
TJPlacement p = Tapjoy.getPlacement("[PLACEMENT_NAME]", placementListener);

リスナーメソッドが実装され、プレイスメントのインスタンスを取得できれば、そのプレイスメントにコンテンツのリクエストを送れます:

java
if(Tapjoy.isConnected())
	p.requestContent();
else
	Log.d("MyApp", "コンテつのリクエストの前に、Tapjoy SDK connectが成功している必要があります。")

注: コンテンツをリクエストする前に、Tpajoy connectコールが成功しているようにして下さい。 onConnectSuccess コールバックを受ける前にコンテンツをリクエストしないようにして下さい。

2. コンテンツのプリロード

良好なユーザー体験を実現するために、ユーザーへコンテンツを表示する時点に先立って コンテンツをリクエストして下さい。 例えば、アプリのメインメニューのボタンでプレイスメントを呼び出す場合、アプリケーションを起動しTapjoy connectが成功した直後にプレイスメントをリクエストした方が良いでしょう。ボタンを押すまでコンテンツをリクエストしない場合、ユーザーはコンテンツがロードされるまでロード中の画面を見る事になります。特に広告の場合、こうした待ち時間があるとユーザーは広告への興味が薄れ、結果としてマネタイズが悪くなる結果となります。

3. リスナー

プレイスメント関連の様々なレスポンスを処理するためのメソッドを準備しておく必要があります。TJPlacementListenerの実装が少なくとも必要です。サンプルコードの全体は、SDKに同梱されている 'EasyApp'をご参照ください。 TJPlacementListener インターフェースで定義されているメソッドは以下の通りです:

java
public void onRequestSuccess(TJPlacement placement); // Tapjoy サーバへのコンテンツリクエストが正常に処理された事を表します。コンテンツが存在するという意味ではありません。
public void onRequestFailure(TJPlacement placement, TJError error);
public void onContentReady(TJPlacement placement); //広告が表示可能になった場合に呼び出されます。
public void onContentShow(TJPlacement placement);
public void onContentDismiss(TJPlacement placement);

注: 動画を表示する可能性のあるプレイスメントを表示する前には、オーディオを停止するようにしてください。停止しない場合、動画の音声とアプリのオーディオが同時に再生されてしまいます。

多くの場合、コンテンツをユーザに表示する前にonContentReady メソッドが呼び出されるのを待つように実装する事をお勧めします。こうしておけば、コンテンツが端末に読み込まれており、すぐに表示可能な状況になってから表示処理を行えるようになります。又は、上記の例のようにp.isContentReady() をチェックする方法もあります。

NOTE: 正常に動作を行うためには、プレイスメントオブジェクトを作成するまでに、Tapjoy connect コールが成功している必要があります。また、自社管理通貨を使用する場合には、プレイスメントオブジェクトでコンテンツのプリロードをはじめる前までにTapjoy.setUserID によりユーザーIDを指定しておく必要があります。

4. プレイスメントの表示

TJPlacementにリクエストをする際に、TJPLacementListenerを実装したオブジェクトを指定します。TJPLacementListenerはonRequestSuccessコールバックがあります。onRequestSuccessコールバックはSDKがコンテンツリクエストをサーバーに正常に送信できた事を示します。このコールバックが呼ばれれば、TJPlacementに表示できるコンテンツがあるかどうかを isContentAvailable 関数を呼んで確認できます:

java
public void onRequestSuccess(TJPlacement tjPlacement)
{
	if(tjPlacement.isContentAvailable())
	{
		//表示するコンテンツがある
	}
	else 
	{
		//コンテンツがない場合の処理
    }
}

isContentAvailable は表示するコンテンツがあるという事を意味しますが、コンテンツのダウンロードが完了したという意味ではありません。コンテンツのロードが完了すると、TJPlacementListenerの onContentReady 関数が呼ばれます。また、TJPlacementオブジェクトのisContentReadyを呼んでダウンロードが完了したかどうかを確認できます。コンテンツのロードが終われば、showContent関数を呼んでいつでもコンテンツを表示できるようになります。

java
public void onContentReady(TJPlacement tjPlacement) 
{
	if(tjPlacement.isContentReady()) 
	{
		// We can uncomment the following line to show the ad as soon as it finishes loading, 
		// or call showContent at a later point once we're ready to display the ad.
	    tjPlacement.showContent();
	}
}

5. コンテンツの再リクエスト

プレイスメントのコンテンツをユーザーに表示した後、次に同じプレイスメントのコンテンツを表示する場合にはコンテンツのリクエストを再度行う必要が(つまり、p.requestContent(); を再度呼び出す)あります。単純に p.showContent(); を再度呼び出すだけではだめで、コンテンツリクエストを再度呼び出す前に行った場合にはshow contentは失敗します。

コンテンツのロードが完了すると、コンテンツ表示が可能になります:

java
if(p.isContentReady()) {
    p.showContent();
}
else {
    //handle situation where there is no content to show, or it has not yet downloaded.
}

6. Tapjoy コンテンツアクションリクエストの処理

アイテム販促 や アナウンスメント コンテンツでは、アプリに表示するコンテンツで指定した値を受け取るコードを書く必要があります。例えば、ボーナス コンテンツはユーザーに渡すアイテム名(文字列)とアイテム数(Integer)を指定しています。この値を受け取り、実際にユーザーにボーナスの付与処理を行う処理はアプリが行う必要があります。次のデリゲート メソッドはこうした特別なコンテンツを処理するためにあります:

java
public void onPurchaseRequest(TJPlacement placement, TJActionRequest request, String productId); //ユーザーがアイテム販促コンテンツでボタンをクリックするとコールされます。アイテムのIAPを行う処理をここに書きます。
//
//
public void onRewardRequest(TJPlacement placement, TJActionRequest request, String itemId, int quantity); //ユーザーがボーナスコンテンツをクローズするとコールされる

注: onRewardRequest はTapjoy 広告による還元には使用されません。このメソッドはボーナス コンテンツの場合にのみ使用されます。

これらの特別なコンテンツのツイ買い方の詳細に関しては、次のドキュメントを参照して下さい: Reward Giveaway Content Units. "In App Promotion" Content Units.

7. 呼びだし地点 の設定

各プレイスメントの "呼びだし地点" を Tapjoy に伝えられるようになりました。次のプリセット値から選択できます:

java
TJEntryPoint.ENTRY_POINT_UNKNOWN
TJEntryPoint.ENTRY_POINT_OTHER
TJEntryPoint.ENTRY_POINT_MAIN_MENU
TJEntryPoint.ENTRY_POINT_HUD
TJEntryPoint.ENTRY_POINT_EXIT
TJEntryPoint.ENTRY_POINT_FAIL
TJEntryPoint.ENTRY_POINT_COMPLETE
TJEntryPoint.ENTRY_POINT_INBOX
TJEntryPoint.ENTRY_POINT_INIT
TJEntryPoint.ENTRY_POINT_STORE 

呼びだし地点 はプレイスメントオブジェクトを作成した後、コンテンツをリクエストする前に設定します:

java
TJPlacement placement = Tapjoy.getPlacement("myPlacement", null);
placement.setEntryPoint(TJEntryPoint.ENTRY_POINT_MAIN_MENU);
placement.requestContent();