현재의 인증 내역을 테스트하기 위해서는 아래의 간단한 쿼리를 통해 테스트하실 수 있습니다. 이 쿼리를 통해 퍼블리셔 계정 내 3개의 앱에 대한 간단한 정보를 확인하실 수 있습니다.
query apps {
publisher {
apps(first: 3) {
nodes {
id
name
sdkApiKey
realWorldCurrency
timezone
}
}
}
}
만약 대시보드 내 앱을 생성하지 않았다면 API를 통해 수익화를 위한 앱을 생성할 수 있습니다.
만약 앱이 구글 플레이 및 앱스토어에 출시되지 않았다러도 걱정하실 필요는 없습니다. storeUrl
파라미터를 포함한 orientation
와 같은 파라미터는 선택 사항입니다.
mutation createPublisherAppWithStoreUrl {
createPublisherApp(input: {
name: "App Created With Store URL",
platform: ANDROID,
storeUrl: "https://play.google.com/store/apps/details?id=com.tapjoy.tapout&gl=us",
orientation: PORTRAIT
}) {
app {
id
name
timezone
realWorldCurrency
}
}
}
mutation createPublisherAppWithoutStoreUrl {
createPublisherApp(input: {
name: "App Created WithOUT Store URL",
platform: ANDROID,
orientation: PORTRAIT,
currency: KRW,
timezone: TOKYO_SEOUL
}) {
app {
id
name
timezone
realWorldCurrency
}
}
}
Tapjoy를 통한 수익화를 위해서는 사상화폐를 생성해야 합니다. 앱과 가상화폐는 다양한 방식으로 연결할 수 있으나 최소 한개의 가상화폐는 필요합니다.
가상화폐는 광고에 매우 중요한 영향을 끼칩니다. - 앱 내에 노출하기에 적합한 광고 콘텐츠의 수위를 결정합니다. 여러분의 어카운트 매니저는 앱의 수위 등급에 대한 답변을 줄 수 있으나, 일반적으로 가상화폐의 수위 등급은 앱의 플랫폼 수위 등급과 비슷하게 설정함으로써 높은 eCPM과 적합한 광고 컨텐츠를 사용자아게 노출시킬 수 있습니다.
만약 사용자에게 가상화폐가 노출되지 않는다면, app ID, 가상화폐 이름, 교환 비율, 앱 등급 설정하시면 됩니다. 만약 교환 비율에 필요 없다면 단순히 100 기본값을 입력해 주시길 바랍니다. (참고 자료: 가상 화폐)
mutation createCurrency {
createCurrency(input: {
appId: "<PASTE_YOUR_APP_ID_HERE>",
name: "New Virtual Currency",
exchangeRate: 100,
maturity: MEDIUM
}) {
currency {
id
name
exchangeRate
initialBalance
maturity
}
}
}
추가로 API 를 통해 기존 가상화폐를 수정할 수 있습니다.
mutation updateCurrency {
updateCurrency(input: {
id: "<CURRENCY_ID>",
maturity: HIGH,
name: "Shell Bells",
initialBalance: 100
}) {
currency {
id
name
exchangeRate
initialBalance
maturity
callbackUrl
}
}
}
다음으로, 한개이상으로 플레이스먼트를 생성합니다. 플레이스먼트
는 앱 내 Tapjoy의 콘텐츠를 표시하기 위한 영역입니다. API 를 통해 플레이스먼트를 생성하였다면 모든 플레이스먼트
에 노출할 콘텐츠
를 생성하실 수 있습니다.
콘텐츠는 eCPM 설정과 함께 어떤 타입의 광고를 보여줄지 결정합니다. 예를 들어 콘첸트 타입을 건너뛰기를 할 수 없는 REWARDED_VIDEO
로 설정과 함께 각 국가별 eCPM을 설정할 수 있습니다. (현재 API 상 eCPM 은 HARD
만 설정할 수 있습니다.)
이름 | 건너뛰기? | 리워드? | 프로그매틱? |
---|---|---|---|
PROGRAMMATIC_REWARDED_VIDEO | 아니오 | 네 | 네 |
PROGRAMMATIC_INTERSTITIAL_VIDEO | 네 | 아니오 | 네 |
REWARDED_VIDEO | 아니오 | 네 | 아니오 |
INTERSTITIAL_VIDEO | 네 | 아니오 | 아니오 |
CPM 겂운 USD 로 설정합니다. 만약 5.5
로 설정하였다면 $5.50 로 세팅 됩니다.
eCPM은 프로그매틱 콘텐츠에는 적용할 수 없습니다.
국가코드 XX
는 "나머지 국가" 를 설정할 용도로 사용합니다. 만약 XX
만 eCPM 이 설정되어 있다면 이는 모든 국가에 적용됩니다. 만약 다른 국가 코드가 설정되어 있다면 XX
는 설정된 국가 이외의 국가에만 적용 됩니다.
mutation createPlacementAndContent {
createPlacementsAndContents(input: {entries: [
{
appId: "<PASTE_YOUR_APP_ID_HERE>",
placementName: "Placement from API",
contentType: REWARDED_VIDEO,
ecpmSettingsToAdd: [
{ price: 5.5, country: "US" },
{ price: 6.5, country: "KR", cpmFloorType: HARD },
{ price: 7.5, country: "JP", cpmFloorType: HARD },
{ price: 7.5, country: "CA", cpmFloorType: HARD }
]
}
]}) {
placements {
id
name
description
contents {
id
name
type
isSkippable
ecpmSettings {
price
country
cpmFloorType
}
}
}
}
}
placement.id 와 content.id 는 이후에 사용 됩니다.
eCPM을 포함한 콘텐츠 내 다양한 설정을 쉽게 업데이트 할 수 있습니다.
예를 들어 만약 이탈리아의 eCPM 설정을 제거하고 일본의 eCPM 설정을 $14 로 올린다고 가정해 봅시다.
mutation updatePlacementAndContent {
updatePlacementsAndContents(input: { entries: [
{
placementId: "<PLACEMENT ID>",
contentId: "<CONTENT CARD ID>",
ecpmSettingsToUpdate: [
{country: "JP", price: 14.0}
],
ecpmSettingsToDelete: [
{country: "IT"}
]
}
]}) {
placements {
id
contents {
id
ecpmSettings {
price
country
}
}
}
}
}
추가로 아래와 같이 쉽게 eCPM 설정을 추가할 수 있습니다.
mutation updatePlacementAndContent {
updatePlacementsAndContents(input: { entries: [
{
placementId: "<PLACEMENT ID>",
contentId: "<CONTENT CARD ID>",
ecpmSettingsToAdd: [
{country: "ES", price: 7.0}
]
}
]}) {
placements {
id
contents {
id
ecpmSettings {
price
country
}
}
}
}
}
API는 잘못된 값을 입력하거나, 검증 실패 등 다양한 이유로 에러를 리턴합니다.
Tapjoy’s Publisher API is atomic. 이는 하나의 쿼리에서 여러개의 액션을 설정할 경우, 특정 단계에서 실패를 한다면 모든 쿼리가 실패로 돌아갈 것입니다. 예를 들어 eCPM 설정을 4개의 콘텐츠에서 진행시 하나의 ID 값이 잘못되었을 경우 해당 쿼리에 설정된 모든 설정이 변경되지 않고 실패하게 됩니다.
만약 앱의 현재 상태를 보고자 하신다면 아래의 쿼리를 통해 확인하실 수 있습니다.
query placements {
publisher {
placements(appId: "<APP_ID>") {
id
name
contents {
id
name
type
currencyId
isSkippable
ecpmSettings {
price
country
cpmFloorType
}
}
}
}
}