TJPlacement 클래스의 인스턴스를 만들고 플레이스먼트 이름으로 초기화합니다. 코드의 플레이스먼트 이름 문자열이 대시 보드의 플레이스먼트 이름과 정확하게 일치하는지 확인하십시오. 콜백을 수신하도록 delegate method를 구현할 수도 있습니다 (아래 설명 참조).
TJPlacement p = TJPlacement.CreatePlacement("APP_LAUNCH");
그 다음 콘텐츠를 요청하십시오.
if (Tapjoy.IsConnected()) {
p.RequestContent();
} else {
Debug.LogWarning("Tapjoy SDK must be connected before you can request content.");
}
NB: 콘텐츠를 요청하기 전에 connect 요청이 정상적으로 완료되어야 합니다. onConnectSuccess callback을 통해 connect 요청이 성공된 것을 확인한 후에 콘텐츠를 요청해야 합니다.
콘텐츠 로딩에 시간이 지연된다면, 사용자 경험을 향상시키키 위해서 콘텐츠 프리로딩 방식을 사용하실 것을 권장드립니다. 예를들어 메인메뉴에 콘텐츠를 보여주는 버튼이 있는 경우, 버튼이 눌려지는 시점이 아니라 어플리케이션 시작하고 connect 요청이 성공한 바로 다음 시점에 미리 RequestContent 실행한다면 사용자가 버튼을 누를 때 지연 없이 즉시 콘텐츠를 표시할 수 있을 것입니다. 이러한 작은 차이가 사용자 이탈을 막고 광고 수익 증대에 기여할 수 있습니다.
콘텐츠 요청 상태에 대한 피드백을 받으려면 다음 콜백 메서드를 구현합니다.
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) {
// 콘텐츠를 실제로 표시할 수 있을 때 호출됩니다.
}
TJPlacement.OnContentShow += HandlePlacementContentShow;
...
public void HandlePlacementContentShow(TJPlacement placement) {
...
}
TJPlacement.OnContentDismiss += HandlePlacementContentDismiss;
...
public void HandlePlacementContentDismiss(TJPlacement placement) {
...
}
실제로 콘텐츠를 표시하려면 ShowContent를 호출합니다.
ShowContent() 호출 전에 콘텐츠가 준비되었는지 확인해야합니다.
if (p.IsContentReady()) {
p.ShowContent();
} else {
// 표시 할 콘텐츠가 없거나 아직 다운로드되지 않은 상황을 처리합니다.
}
비디오 콘텐츠를 보여주기 전에 앱의 자체 오디오를 음소거해야 합니다. 그렇지 않으면, 비디오의 오디오와 앱 자체 오디오가 서로 오버랩 되거나 충돌할 수 있습니다.
HandlePlacementContentReady 콜백함수가 호출될 때 콘텐츠를 사용자에게 보여주도록 구현하는 방식을 권장합니다. 이와 같은 방식으로 구현하면 콘텐츠가 완전히 디바이스에 로딩된 것을 보장할 수 있으며 지연 없이 콘텐츠를 사용자에게 보여줄 수 있습니다. 다른 방식으로는, 위 예제와 같이 *p.IsContentReady()*의 리턴값이 true 경우 콘텐츠를 보여주는 방식이 있습니다.
NB: 콘텐츠를 디스플레이하기 전에 connect 요청이 정상적으로 완료되어야 합니다. onConnectSuccess callback을 통해 connect 요청이 성공된 것을 확인한 후에 콘텐츠를 디스플레이해야 합니다.
플레이스먼트의 콘텐츠를 사용자에게 성공적으로 표시 한 후에는 콘텐츠를 다시 요청(즉, *p.RequestContent();*를 다시 호출)하여 다음 콘텐츠 위해 플레이스먼트를 "다시 로드"해야합니다. 컨텐츠를 재요청 하지 않으면 *p.ShowContent();*를 다시 호출 할 수 없습니다. 콘텐츠를 재요청하기 전에 콘텐츠를 다시 표시하려고하면 ShowContent가 실패합니다.
비디오 콘텐츠 플레이스먼트의 경우, 콘텐츠를 다시 요청하는 적절한 타이밍은 콘텐츠가 표시된 직후입니다. 이 구현방식으로 사용자가 현재 동영상을 보는 동안 다음 동영상이 미리 로드 할 수 있습니다(프리로딩 방식). 콘텐츠를 다시 요청하기 위해 콘텐츠가 닫힐 때까지 기다리면 사용자가 즉시 다른 동영상을 보려고 할 때 지연이 발생합니다.
리워드 및 IAP 프로모션과 같은 일부 탭조이 콘텐츠 유형은 해당 콘텐츠에서 전달한 파라메터 값을 기반으로 콜백 코드를 작성해야 합니다. 예를 들어, 리워드 콘텐츠는 사용자에게 제공 할 아이템 이름(문자열값)과 수량(정수값)을 지정합니다. 리워드 지급이 반영되도록 사용자의 인벤토리를 실제로 조정하는 것은 애플리케이션에 달려 있습니다. 이러한 특수한 유형의 콘텐츠에 대해 다음과 같은 위임 메소드가 있습니다.
<pre class="prettyprint"> TJPlacement.OnPurchaseRequest += HandleOnPurchaseRequest;
...
public void HandleOnPurchaseRequest(TJPlacement placement, TJActionRequest request, string productId) {
...
}
TJPlacement.OnRewardRequest += HandleOnRewardRequest;
...
public void HandleOnRewardRequest(TJPlacement placement, TJActionRequest request, string itemId, int quantity) {
...
}
HandleOnRewardRequest는 탭조이 광고와 상호 작용 한 사용자에게 가상화폐가 지급될 때 호출되는 것이 아닙니다. 이 콜백은 리워드 기브어웨이 컨텐츠를 사용할 때만 활용됩니다.
선택사항으로 각 플레이스먼트 별로 진입 경로를 설정할 수 있습니다. 이를 위해 아래의 미리 설정된 값을 통해 설정할 수 있습니다.
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);
placement.requestContent();