SDK
TJPlacement ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๊ณ ํ๋ ์ด์ค๋จผํธ๋ฅผ ์์ฒญํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ๊ธฐ๋ณธ SDK ๊ธฐ์ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ๋ ์ด์ค๋จผํธ ์ด๋ฆ์ด ํญ์กฐ์ด ๋์๋ณด๋์์ ์ค์ ๋ ์ด๋ฆ๊ณผ ์ผ์นํ๋๋ก ํฉ๋๋ค.
์ฝ๋ ์๊ฐ 1๋ถ์ต๊ทผ ์
๋ฐ์ดํธ: 4๋ฌ ์
ํ๋ ์ด์ค๋จผํธ ์์ฒญ
ํ๋ ์ด์ค๋จผํธ๋ฅผ ์์ฒญํ๋ ค๋ฉด ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฝ๋์ ํ๋ ์ด์ค๋จผํธ ์ด๋ฆ ๋ฌธ์์ด์ด ๋์๋ณด๋์ ํ๋ ์ด์ค๋จผํธ ์ด๋ฆ๊ณผ ์ ํํ ์ผ์นํด์ผ ํฉ๋๋ค.
TJPlacementTJPlacementListener placementListener = this;TJPlacement p = Tapjoy.getPlacement("[PLACEMENT_NAME]", placementListener);
Listener ๋ฉ์๋๊ฐ ์ ์ฉ๋๊ณ ํ๋ ์ด์ค๋จผํธ๊ฐ ์ธ์คํด์คํ๋๋ฉด ํด๋น ํ๋ ์ด์ค๋จผํธ์ ๋ํ ์ฝํ
์ธ ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค.
if(Tapjoy.isConnected()) p.requestContent();else Log.d("MyApp", "Tapjoy SDK must finish connecting before requesting content.")
์ฝํ
์ธ ๋ฅผ ์์ฒญํ๊ธฐ ์ ์ ํญ์กฐ์ด ์ฐ๊ฒฐ ํธ์ถ์ด ์ฑ๊ณตํด์ผ ํฉ๋๋ค. ์ฝ๋ฐฑ์ ์์ ํ ์ดํ ์์ฒญํด์ผ ํฉ๋๋ค.
onConnectSuccess์ฝํ ์ธ ์ฌ์ ์บ์ฑ
์ต์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด ์ฌ์ฉ์์๊ฒ ํด๋น ์ฝํ
์ธ ๊ฐ ํ์๋๊ธฐ ์ ์ ์ฝํ
์ธ ๋ฅผ ์์ฒญํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ ์ด์ค๋จผํธ๊ฐ ๋ฉ์ธ ๋ฉ๋ด์ ๋ฒํผ์ด๋ฉด ํญ์กฐ์ด ์ฐ๊ฒฐ ํธ์ถ ์ฑ๊ณต ์งํ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋ ๋ ํด๋น ์ฝํ
์ธ ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค. ๋ง์ง๋ง ์๊ฐ๊น์ง ๋๊ธฐํ์ฌ ์ฝํ
์ธ ๋ฅผ ์์ฒญํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฝํ
์ธ ๊ฐ ๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ๋ก๋ฉ ์คํผ๋๋ฅผ ๋ณด๊ฒ ๋ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ด๊ณ ์์ ์ฌ์ฉ์๊ฐ ๊ด๊ณ ์ ์ํธ ์์ฉํ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ํ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์์ต์ ์ฐฝ์ถํ ๊ฐ๋ฅ์ฑ ์ญ์ ์ค์ด๋ญ๋๋ค.
๋ฆฌ์ค๋
๋ค์ํ ํ๋ ์ด์ค๋จผํธ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ฉ์๋๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค. ์ต์ํ ํด๋์ค๋ TJPlacementListener ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํด์ผ ํฉ๋๋ค(YourMainActivity ๊ณต๊ฐ ํด๋์ค๊ฐ ํ์ฅ๋๊ณ Activity๊ฐ TJPlacementListener๋ฅผ ๊ตฌํํจ).
TJPlacementListenerpublic void onRequestSuccess(TJPlacement placement); // This just means the SDK has made contact with the Offerwall 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);
๋์์์ด ํฌํจ๋ ์ ์๋ ํ๋ ์ด์ค๋จผํธ์ ์ฝํ
์ธ ๋ฅผ ํ์ํ๊ธฐ ์ ์ ์ค๋์ค๋ฅผ ์์๊ฑฐ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์์ ์ค๋์ค์ ์ฑ ์ค๋์ค๊ฐ ์ถฉ๋ํ ์ ์์ต๋๋ค.
์ข
์ข
onContentReady ๋ธ๋ฆฌ๊ฒ์ดํธ๊ฐ ์๋ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ์ฌ์ฉ์์๊ฒ ์ฝํ
์ธ ๋ฅผ ํ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝํ
์ธ ๊ฐ ์ค์ ๋ก ๋๋ฐ์ด์ค์ ์๋์ง ํ์ธํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์์๊ฒ ์ง์ฐ ์์ด ํ์ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋๋ฑํ ๋ฐฉ๋ฒ์ ์์ ์์์ ๊ฐ์ด p.isContentReady()๊ฐ true์ธ์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
ํ๋ ์ด์ค๋จผํธ ํ์
TJPLacement๋ฅผ ์์ฒญํ ๋ TJPLacementListener ์ค๋ธ์ ํธ์ ํจ๊ป ์ ๋ฌํฉ๋๋ค. TJPlacementListener์๋ โonRequestSuccessโ ์ฝ๋ฐฑ์ด ํฌํจ๋ฉ๋๋ค. SDK๊ฐ ์๋ฒ์ ์ฝํ
์ธ ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์์ฒญํ ํ onRequestSuccess ์ฝ๋ฐฑ์ด ์๋ํฉ๋๋ค. ์ด ์ฝ๋ฐฑ์ด ์๋ํ๋ฉด isContentAvailable ํจ์๋ฅผ ํธ์ถํ์ฌ TJPlacement์ ์ฝํ
์ธ ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
public void onRequestSuccess(TJPlacement tjPlacement){ if(tjPlacement.isContentAvailable()) { //There is an ad unit available } else { //Fall-through }}
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 when we're ready to display the ad. tjPlacement.showContent(); }}
์ฝํ ์ธ ๋ค์ ์์ฒญ
ํ๋ ์ด์ค๋จผํธ์์ ์ฌ์ฉ์์๊ฒ ์ฝํ
์ธ ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฝํ
์ธ ๋จ์๋ก ํ๋ ์ด์ค๋จผํธ๋ฅผ โ์ฌ๋ก๋โํ๋ ค๋ฉด ์ฝํ
์ธ ๋ฅผ ๋ค์ ์์ฒญํด์ผ ํฉ๋๋ค(์: ๋ค์ ํธ์ถ). ๋ฅผ ๋ค์ ํธ์ถํ ์ ์์ต๋๋ค. ์ฝํ
์ธ ๋ฅผ ์์ฒญํ๊ธฐ ์ ์ ์ฝํ
์ธ ๋ฅผ ํ์ํ๋ ค๊ณ ํ๋ฉด ์ฝํ
์ธ ๊ฐ ํ์๋์ง ์์ต๋๋ค.
p.requestContent();p.showContent();์ฝํ
์ธ ๊ฐ ์ค๋น๋๋ฉด ์ฝํ
์ธ ๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
if(p.isContentReady()) { p.showContent();}else { //handle situation where there is no content to show, or it has not yet downloaded.}
ํญ์กฐ์ด ์ฝํ ์ธ ํ๋ ์์ฒญ ์ฒ๋ฆฌ
๋ณด์๊ณผ IAP Promo ๋ฑ์ ์ผ๋ถ ํญ์กฐ์ด ์ฝํ
์ธ ์ ํ์์๋ ํด๋น ์ฝํ
์ธ ๋จ์๊ฐ ์ ๋ฌํ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ํตํด ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ณด์ ์ฝํ
์ธ ๋จ์๋ ์ฌ์ฉ์์๊ฒ ์ง์ ํ ํญ๋ชฉ ์ด๋ฆ(๋ฌธ์์ด)๊ณผ ์๋(์ ์)์ ์ง์ ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์์๋ ๋ณด์์ ๋ฐ์ํ๋๋ก ์ฌ์ฉ์์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ค์ ๋ก ์กฐ์ ํด์ผ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํน์ํ ์ ํ์ ์ฝํ
์ธ ๋จ์์ ๋ํ ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ฉ์๋๊ฐ ์์ต๋๋ค.
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
์ํธ๋ฆฌ ํฌ์ธํธ ์ค์
ํ์์ ๋ฐ๋ผ ๊ฐ ํ๋ ์ด์ค๋จผํธ์ โ์ํธ๋ฆฌ ํฌ์ธํธโ๋ฅผ ํญ์กฐ์ด์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ํ ๊ฐ๋ฅํ ๋ค์ํ ํ๋ฆฌ์
๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
TJEntryPoint.ENTRY_POINT_UNKNOWNTJEntryPoint.ENTRY_POINT_OTHERTJEntryPoint.ENTRY_POINT_MAIN_MENUTJEntryPoint.ENTRY_POINT_HUDTJEntryPoint.ENTRY_POINT_EXITTJEntryPoint.ENTRY_POINT_FAILTJEntryPoint.ENTRY_POINT_COMPLETETJEntryPoint.ENTRY_POINT_INBOXTJEntryPoint.ENTRY_POINT_INITTJEntryPoint.ENTRY_POINT_STORE
ํ๋ ์ด์ค๋จผํธ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ํ, ์ฝํ
์ธ ๋ฅผ ์์ฒญํ๊ธฐ ์ ์ ์ํธ๋ฆฌ ํฌ์ธํธ๋ฅผ ์ค์ ํฉ๋๋ค.
TJPlacement placement = Tapjoy.getPlacement("myPlacement", null);placement.setEntryPoint(TJEntryPoint.ENTRY_POINT_MAIN_MENU);placement.requestContent();