SDK

1. 请求展示位置

创建Placement需要使用TJPlacement类。请确保您代码中的Placement名称和控制面板上的完全一致:

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

当listener方法已经就位并且placement已经被实例化了以后,您可以为这个placement添加广告内容::

java
if(Tapjoy.isConnected())
	p.requestContent();
else
	Log.d("MyApp", "Tapjoy SDK must finish connecting before requesting content.")

注意: 在请求广告内容之前,请确认Tapjoy Connect调用成功。请不要在onConnectSuccess回调之前请求广告。

2. 缓存广告内容

为了最佳用户体验,请在用户观看内容之前提前缓存。比如,如果placement是您主菜单的一个按钮,您可能想要在应用开始时,Tapjoy连接成功后请求内容。如果您最后才请求内容,用户有可能要等内容加载一段时间。

3. 监听

您需要定义代理方法来处理各种展示位置响应。您至少需要实现TJPlacementListener接口 (public class YourMainActivity extends and Activity implements TJPlacementListener). Tapjoy示例代码 中提供了实现的示例。TJPlacementListener 接口主要的方法如下:

java
public void onRequestSuccess(TJPlacement placement); // This just means the SDK has made contact with Tapjoy's servers. It does not necessarily mean that any content is available.
public void onRequestFailure(TJPlacement placement, TJError error);
public void onContentReady(TJPlacement placement); //This is called when the content is actually available to display.
public void onContentShow(TJPlacement placement);
public void onContentDismiss(TJPlacement placement);

需要注意的是当一个placement的内容有可能含有视频的时候,您需要将应用的声音调到静音,否则视频的声音和您的应用的声音可能会冲突。.

通常,我们推荐等到onContentReady回调之后来展示广告。这种情况下,您可以保证广告已经缓存到设备中,在播放时不会产生延时。您也可以检查p.isContentReady()来确定广告已缓存。

NOTE: 在创建展示位置对象之前,请确保Tapjoy connect已调用并返回成功。

4. 展示广告位置

当您请求TJPLacement时,会触发TJPLacementListener对象,TJPlacementListener包括"onRequestSuccess"回调。SDK成功向我们的服务器请求内容后会触发onRequestSuccess。然后您可以通过调用isContentAvailable功能检查是否有内容:

java
public void onRequestSuccess(TJPlacement tjPlacement)
{
	if(tjPlacement.isContentAvailable())
	{
		//There is an ad unit available
	}
	else 
	{
		//Fall-through
    }
}

注意isContentAvailable表示有广告,但不意味着加载已完成。一旦广告完成加载,就会触发TJPlacementListener的 onContentReady 回调。您也可以调用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再次展示。

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

6. 处理Tapjoy广告Action请求

一些Tapjoy广告类型,比如Reward以及IAP促销,要求您的代码基于广告内容所传递的参数采取行动。比如,Reward广告要求将事物名称(字符串)以及数量(整数)返回给用户。当然获得Reward以后用户具体奖励仍然是由您的应用来决定。下列委托方法只适用于这些特殊的广告类型:

java
public void onPurchaseRequest(TJPlacement placement, TJActionRequest request, String productId); //onPurchaseRequest called when user clicks the product link in IAP promotion content. Put the code that actually triggers the IAP here.
//
//
public void onRewardRequest(TJPlacement placement, TJActionRequest request, String itemId, int quantity); //called when the content closed in reward content

请注意onRewardRequest并不是Tapjoy奖励回调,它只用于Reward类型广告。

请参考如下文档学习如何使用这些特殊的广告类型。 免费奖励广告. 自推广广告.

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();