SDK

1. 플레이스먼트 요청

우선 TJPlacement 를 아래와 같이 임포트 합니다.

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

먼저 플레이스먼트 이름과 함께 TJPlacement 클래스의 인스턴스를 생성합니다. 플레이스먼트 이름은 반드시 Tapjoy 대시보드에 등록한 플레이스먼트 이름과 정확히 일치해야 합니다. 추가로 플레이스먼트에 대한 콜백을 수신할 수 있도록 delegate method 를 구현합니다. (아래 설명 참고)

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

마지막으로 콘텐츠 요청 API 를 호출합니다.

placement.requestContent();

**참고: 콘텐츠 요청시 Tapjoy Connect 요청이 정상적으로 완료되었는지 확인합니다. onConnectSuccess 콜백을 통해 커넥션 성공 여부를 확인할 수 있습니다.

2. 콘텐츠 프리로딩

사용자의 UX 를 향상시키기 위해 콘텐츠 프리로딩 방식을 사용할 것을 권장합니다. 예를 들어 만약 메인메뉴에 플레이스먼트 버튼이 있다면, 앱 실행 직후 Tapjoy connect 가 성공한 후 미리 requestContent api 를 통해 콘텐츠를 미리 받아 지연 없이 해당 콘텐츠를 즉시 노출할 수 있습니다. 이러한 차이가 사용자의 이탈을 막고 광고 수익 증대에 기여할 수 있습니다.

3. TJPlacement 콜백 활용

콘텐츠 요청 및 노출에 대한 상태 피드백을 받으려면 아래와 같이 콜백을 구현합니다.

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) => { });

4. 플레이스먼트 보여주기

플레이스먼트를 보여주기 위해서는 placement.showContent(); 호출합니다.

showContent() 를 호출하기 전 콘텐츠가 준비되었는지 확인합니다.

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

참고: 비디오 콘텐츠를 보여주기 전 앱 자체의 오디오를 음소거 할 것을 권장합니다. 그렇지 않을 경우 비디오 콘텐츠의 오디오와 앱 자체의 오디오가 충돌할 수 있습니다.

사용자에게 콘텐츠를 보여주기 전 CONTENT_IS_READY 콜백을 받고 이를 보여주는 것을 권장합니다. 이 방법으로 사용자에게 지연 없이 콘텐츠를 보여줄 수 있습니다. 다른 방식으로 위의 예제와 같이 placement.isContentReady()가 true 인 경우 showContent를 호출하여 콘텐츠를 보여주는 방식이 있습니다.

참고: 플레이스먼트의 정상적인 동작을 위해 반드시 Tapjoy connect API를 먼저 호출하여 커넥션이 성공한 것을 확인 후 플레이스먼트 객체를 생성하는 것을 권장합니다.

5. 콘텐츠 다시 요청하기

시용자들에게 콘텐츠의 노출이 완료되었다면 placement.requestContent()를 호출하여 콘텐츠를 다시 받아와야 합니다. 콘텐츠 재 요청이 이루어지지 않은 상태에서 placement.showContent() 가 다시 호출되면 콘텐츠가 표시되지 않습니다.

비디오 콘텐츠를 보여주는 플레이스먼트에 대한 적절한 재요청 타이밍은 비디오가 표시된 직후에 콘텐츠를 다시 요청하는 것입니다. 이 구현방법으로 현재 동영상을 보고 있는 동안 다음 동영상을 미리 불러올 수 있습니다. 콘텐츠를 다시 요청하기 위해 콘텐츠가 닫힐 때까지 기다리면 사용자가 즉시 콘텐츠를 보려할 경우 지연이 발생합니다.

6. 진입 경로 설정

선택사항으로 각 플레이스먼트 별로 진입 경로를 설정할 수 있습니다. 이를 위해 아래의 미리 설정된 값을 통해 설정할 수 있습니다.

TJEntryPointUnknown
TJEntryPointOther
TJEntryPointMainMenu
TJEntryPointHud
TJEntryPointExit
TJEntryPointFail
TJEntryPointComplete
TJEntryPointInbox
TJEntryPointInit
TJEntryPointStore

진입 경로는 플레이스먼트 오브젝트 생성 후, 콘텐츠를 요청하기 전에 호출합니다.

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