# SDK

> 查看 React Native SDK 指南，了解如何使用 TJPlacement 来请求和显示广告位，包括预缓存内容和处理回调以实现流畅的用户体验。

## 请求广告位##requesting-a-placement

首先，导入 `TJPlacement`：

```javascript
import Tapjoy, { TJPlacement } from "tapjoy-react-native-sdk";
```

创建 `TJPlacement` 的一个实例，并使用广告位名称对其进行初始化。确保代码中的广告位名称字符串与后台中的广告位名称完全匹配。还可以实现委托来接收回调（下文对此进行了说明）。

```javascript
let placement = new TJPlacement("Placement Name");
```

现在可以请求内容。

```javascript
placement.requestContent();
```

在请求内容之前，请确保 Tapjoy connect 调用已成功。在收到 `onConnectSuccess` 回调之前，不要发起请求。

## 预缓存内容##pre-caching-the-content

为了提供最佳用户体验，请在向用户显示内容之前提前请求内容。例如，如果广告位是主菜单上的按钮，您可能需要在应用程序启动时（就在 Tapjoy Connect 调用成功后）为其请求内容。如果等到最后一刻才请求内容，用户很可能需要等待内容加载并看着加载图标旋转。对于广告，这种情况会导致用户不太可能与广告互动，因此不太可能给您带来收入。

## 回调##callbacks

要获取有关内容请求状态的反馈，请实现以下回调：

```javascript
placement.on(TJPlacement.REQUEST_DID_SUCCEED, (placement: TJPlacement) => { });
placement.on(TJPlacement.REQUEST_DID_FAIL, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_IS_READY, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_DID_APPEAR, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_DID_DISAPPEAR, (placement: TJPlacement) => { });
```

## 显示广告位##displaying-a-placement

要显示内容，请使用 `placement.showContent();`。

请进行检查以确保内容在 `showContent()` 前已准备就绪：

```javascript
if (placement.isContentReady()) {
   placement.showContent();
}
```

最好是在显示可能包含视频的广告位的内容之前先将应用的音频静音，否则视频的音频与应用的音频可能会发生冲突。

通常，最好等到 `CONTENT_IS_READY` 回调触发之后再向用户显示内容。这样就可以确保内容已实际位于设备上，并可立即向用户显示而不会有延迟。另一种等效方法是检查 `p.isContentReady()` 是否为 true，如以上示例中所示。

为了确保功能正常，在创建广告位对象之前，需要先发出 Tapjoy connect 调用并获得成功。

## 重新请求内容##re-requesting-the-content

成功向用户显示广告位中的内容后，必须再次请求内容（例如，再次调用 `placement.requestContent();`），以便为该广告位“重新加载”另一个内容单元。不能再次调用 `placement.showContent();`。如果在请求内容之前尝试显示内容，内容显示将失败。

对于需要视频内容的广告位，重新请求内容的最佳时机是在内容显示结束后立即进行。这样就会在用户观看当前视频时预加载下一个视频。如果您等到内容消失后再重新请求内容，而用户立即尝试观看另一个视频，则会出现延迟。

## 设置入口点##setting-the-entry-point

（可选）您可以将每个广告位的“入口点”告诉 Tapjoy。有多种预设值可供选择：

```javascript
TJEntryPointUnknown
TJEntryPointOther
TJEntryPointMainMenu
TJEntryPointHud
TJEntryPointExit
TJEntryPointFail
TJEntryPointComplete
TJEntryPointInbox
TJEntryPointInit
TJEntryPointStore
```

在创建广告位对象之后但在请求内容之前设置入口点：

```javascript
let placement = new TJPlacement("myPlacement");
placement.setEntryPoint(TJEntryPoint.TJEntryPointMainMenu);
placement.requestContent(); 
```
