탭조이 오퍼월 관리형 재화를 사용하여 탭조이 서버에 사용자 재화 잔액을 저장하고 관리합니다.
읽는 시간 4분최근 업데이트: 2달 전
탭조이 관리형 재화를 사용하면 탭조이의 서버를 사용하여 사용자의 재화 금액을 저장할 수 있습니다. 이 서비스는 탭조이의 퍼블리셔 SDK를 연동하는 모든 개발자에게 무료로 제공됩니다. 이렇게 하면 애플리케이션의 사용자 재화 데이터를 저장하는 데 일반적으로 필요한 백엔드 작업을 하지 않을 수 있습니다. 연동은 비교적 간단하며, 아래에 연동 방법이 상세히 설명되어 있습니다.
재화 잔액 가져오기
사용자의 현재 가상 재화를 확인하려면 다음 메서드를 호출합니다.VIRTUAL CURRENCY BEST PRACTICE: 사용자의 잔액이 항상 최신 상태를 유지하도록 가능한 한 자주 getCurrencyBalance를 호출하는 것이 좋습니다. 앱 실행 시, 앱 재개 시, 탭조이 보기 종료 시, 플레이스먼트 콘텐츠가 사라질 때 등이 사용자의 잔액을 확인하는 일반적인 시점입니다. 광고 콘텐츠가 사라진 후 3.5초 후에 getCurrencyBalance(또는 사용 중인 플랫폼의 해당 호출)를 호출하는 것이 특히 유용한 경우가 많습니다. 이렇게 하면 재화 잔액을 확인할 때까지 보상이 시스템에 반영될 시간을 확보할 수 있습니다. 콘텐츠 표시가 끝난 직후 getCurrencyBalance를 확인하면, 잔액을 조회하기 전에 보상이 사용자의 잔액에 반영되지 않을 수 있습니다.
참고
탭조이는 사용자에게 최대한 신속하게 보상을 제공하기 위해 노력하지만, 즉시 보상이 이루어질 것을 보장할 수는 없습니다. 사용자에게 보상이 지급되기까지 걸리는 시간은 여러 요인에 따라 달라집니다. 베스트 프랙티스로, 동영상 광고 종료 시점 확인 외에도 정기적으로 잔액을 확인하고 앱 실행, 앱 재개, 레벨 사이, 스토어 로드 전 등 특정 앱 이벤트 발생 후에도 잔액을 확인해야 합니다. 또한 사용자에게 오퍼 완료까지 시간이 소요될 수 있음을 알리는 것을 권장합니다.
// This method requests the tapjoy server for current virtual currency of the user.//Get currency[Tapjoy getCurrencyBalanceWithCompletion:^(NSDictionary *parameters, NSError *error) { if (error) { //Show error message NSLog(@"getCurrencyBalance error: %@", [error localizedDescription]); } else { //Update currency value of your app NSLog(@"getCurrencyBalance returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); }}];
위에서 설명한 바와 같이, 완료 블록에서 재화 잔액에 대한 알림을 받게 되며,
currencyName
파라미터는 재화 이름을, 'amount'는 사용자의 잔액을 제공합니다.구현 세부 사항은 SDK 패키지의 샘플 애플리케이션을 참고하십시오.
// This method requests the tapjoy server for current virtual currency of the user.//Get currency[Tapjoy getCurrencyBalanceWithCompletion:^(NSDictionary *parameters, NSError *error) { if (error) { //Show error message NSLog(@"getCurrencyBalance error: %@", [error localizedDescription]); } else { //Update currency value of your app NSLog(@"getCurrencyBalance returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); }}];
지정한 TJGetCurrencyBalanceListener의 onGetCurrencyBalanceResponse(String currencyName, int balance) 콜백 메서드를 통해 해당 재화 잔액이 알려집니다. onGetCurrencyBalanceResponseFailure(String error) 콜백 메서드에서 오류 상태가 통보됩니다.
참고
애플리케이션 시작 및 재개 시 getCurrencyBalance(…)를 호출하는 것이 가장 좋습니다. SPEND 및 AWARD 재화의 콜백 알림은 사용자의 총 가상 재화 잔액도 반환하므로, 이를 활용하여 사용자가 보유한 총 재화량을 업데이트합니다.
지정한 OnGetCurrencyBalanceResponse 핸들러를 통해 재화 잔액에 대한 알림을 받게 되며, 해당 핸들러는
currencyName
및
balance
파라미터를 전달합니다. OnGetCurrencyBalanceResponseFailure 핸들러에서 오류가 발생하면 알림을 받게 됩니다.
try { let result = await Tapjoy.getCurrencyBalance(); let currencyName = result['currencyName']; let amount = result['amount'];} catch (error: any) { //Handle error}
React Native에서 파라미터를 받지 않는
getCurrencyBalance()
에 대해 프로미스를 사용합니다. 프러미스는 사전 또는 오류(이 오류는 처리되어야 함)로 해결됩니다. 딕셔너리 키에는
currencyName
재화 금액이 포함된 문자열이 있습니다.
// Get currency TapjoyAIR.getCurrencyBalance();// Setup handlersTapjoyAIR.addEventListener(TJCurrencyEvent.GET_CURRENCY_BALANCE_SUCCESS, tapjoyCurrencyEventHandler);TapjoyAIR.addEventListener(TJCurrencyEvent.GET_CURRENCY_BALANCE_FAILURE, tapjoyCurrencyEventHandler);private function tapjoyCurrencyEvents(event:TJCurrencyEvent):void { trace("Tapjoy sample event listener for " + event.type + ", " + event.balance + ", " + event.currencyName);}
지정한
TJCurrencyEvent
.GET_CURRENCY_BALANCE_SUCCESS 핸들러를 통해 재화 잔액에 대한 알림을 받게 되며, 해당 핸들러는
TJCurrencyEvent
오브젝트를 전달합니다. 이 오브젝트에는
currencyName
및
balance
등록 정보가 포함되어 있습니다.
TJCurrencyEvent.GET\_CURRENCY\_BALANCE\_FAILURE
핸들러에서 오류가 발생하면 알림을 받게 됩니다.
사용자가 재화를 획득했는지 확인
사용자에게 앱이 마지막으로 재화 잔액을 조회한 이후 가상 재화를 획득했음을 알리기 위해 알림 관찰자를 설정합니다.
// Set the notification observer for earned-currency-notification. It's recommended that this be placed within the applicationDidBecomeActive method.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showEarnedCurrencyAlert:) name:TJC_CURRENCY_EARNED_NOTIFICATION object:nil];// In the following method, you can set a custom message or use the default UIAlert to inform the user that they just earned some currency.- (void)showEarnedCurrencyAlert:(NSNotification*)notifyObj{ NSNumber *currencyEarned = notifyObj.object; int earnedNum = [currencyEarned intValue]; NSLog(@"Currency earned: %d", earnedNum); // Pops up a UIAlert notifying the user that they have successfully earned some currency. // This is the default alert, so you may place a custom alert here if you choose to do so. [Tapjoy showDefaultEarnedCurrencyAlert]; // This is a good place to remove this notification since it is undesirable to have a pop-up alert more than once per app run. [[NSNotificationCenter defaultCenter] removeObserver:self name:TJC_CURRENCY_EARNED_NOTIFICATION object:nil];}
사용자가 가상 재화를 획득할 때마다(예: 오퍼를 통해) 알림을 받으려면 다음 방법으로 획득한 재화 리스너를 설정합니다.
// Get notifications whenever Tapjoy currency is earned.Tapjoy.setEarnedCurrencyListener(new TJEarnedCurrencyListener() { @Override public void onEarnedCurrency(String currencyName, int amount) { Log.i("Tapjoy", "You've just earned " + amount + " " + currencyName); }});
지정한
TJEarnedCurrencyListener
에
onEarnedCurrency(String currencyName, int amount)
콜백 메서드에서 획득한 재화에 대한 알림을 받게 됩니다. 예를 들어 현재 재화 잔액이 100이고 사용자가 25 재화 상당의 오퍼를 완료한 경우, 다음에
지정한 OnEarnedCurrency 핸들러를 통해 획득한 재화로 알림을 받게 되며, currencyName 및 amount earned 파라미터가 전달됩니다.
TapjoyAIR.addEventListener(TJEarnedCurrencyEvent.EARNED_CURRENCY, tapjoyEarnedCurrencyEventHandler);private function tapjoyEarnedCurrencyEventHandler(event:TJEarnedCurrencyEvent):void{ trace("You can notify user's here that they've just earned " + event.amount + " " + event.currencyName);}
지정한
TJEarnedCurrencyEvent.EARNED\_CURRENCY
핸들러에서 얻은 재화에 대해 알림을 받게 되며, 이 핸들러는
TJEarnedCurrencyEvent
오브젝트를 전달합니다. 이 오브젝트에는 currencyName 및 amount 프로퍼티가 포함되어 있습니다.
탭조이 관리형 재화 지출
사용자의 가상 재화를 일정 금액 사용하려면 다음 메서드를 호출합니다.
// This method call will deduct 10 virtual currencies from the user's total.[Tapjoy spendCurrency:10 completion:^(NSDictionary *parameters, NSError *error) { if (error) { NSLog(@"spendCurrency error: %@", [error localizedDescription]); } else { NSLog(@"spendCurrency returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); }}];
위에서 설명한 바와 같이, 완료 블록에서 재화 잔액에 대한 알림을 받게 되며, 파라미터
currencyName
는 재화 이름을 제공하고,
amount
는 사용자의 잔액을 제공합니다.
Tapjoy.spendCurrency(10, new TJSpendCurrencyListener() { @Override public void onSpendCurrencyResponse(String currencyName, int balance) { Log.i("Tapjoy", currencyName + ": " + balance); } @Override public void onSpendCurrencyResponseFailure(String error) { Log.i("Tapjoy", "spendCurrency error: " + error); }});
지정한
TJSpendCurrencyListener
의
onSpendCurrencyResponse(String currencyName, int balance)
try { let result = await Tapjoy.awardCurrency(10); let currencyName = result['currencyName']; let amount = result['amount'];} catch (error: any) { //Handle error}
React Native에서 금액을 파라미터로 받는
awardCurrency()
에는 프로미스를 사용합니다. 프러미스는 사전 또는 오류(이 오류는 처리되어야 함)로 해결됩니다. 딕셔너리 키에는
currencyName
재화 금액이 포함된 문자열이 있습니다.
// Award currency TapjoyAIR.awardCurrency(10);// Setup handlersTapjoyAIR.addEventListener(TJCurrencyEvent.AWARD_CURRENCY_SUCCESS, tapjoyCurrencyEventHandler);TapjoyAIR.addEventListener(TJCurrencyEvent.AWARD_CURRENCY_FAILED, tapjoyCurrencyEventHandler);private function tapjoyCurrencyEventHandler(event:TJCurrencyEvent):void { trace("Tapjoy sample event listener for " + event.type + ", " + event.balance + ", " + event.currencyName);}
지정한
TJCurrencyEvent.AWARD\_CURRENCY\_SUCCESS
핸들러에서 재화 잔액에 대한 알림이 전달되며, 이 핸들러는
TJCurrencyEvent
파라미터를 전달합니다. 이 오브젝트에는
currencyName
및 잔액 프로퍼티가 포함되어 있습니다.
TJCurrencyEvent
.
AWARD\_CURRENCY\_FAILURE
핸들러에서 오류가 발생하면 알림을 받게 됩니다.
관리형 재화 테스트
오퍼월에서 테스트 오퍼를 확인하려면 애플리케이션에 테스트 디바이스를 추가할 수 있습니다. 이렇게 하면 테스트 오퍼가 오퍼월 상단에 표시되어 재화 테스트를 쉽게 수행할 수 있습니다.탭조이 관리형 재화 구현이 제대로 작동하는지 확인하는 또 다른 툴로는 탭조이 대시보드의 'Get User Balance' 툴이 있습니다.
앱에서 사용자의 잔액이 본 툴과 다르게 표시된다면, 앱이 탭조이 잔액과 동기화되지 않은 상태일 가능성이 높습니다. 일반적으로 앱에서
getCurrencyBalance
를 충분히 자주 호출하도록 하면 이 문제를 해결할 수 있습니다.
베스트 프랙티스
중요
awardCurrency 및 spendCurrency 호출을 반드시 검증하고, 호출이 성공한 경우에만 콘텐츠/구매 항목을 잠금 해제합니다. awardCurrency 및 spendCurrency 호출이 실패할 경우, 디바이스 내 잔액이 손상되었을 가능성이 높습니다. SDK에 포함된 탭조이 EasyApp 프로젝트의 예시를 참고하십시오.
일부 퍼블리셔는 클라이언트 측 알림 전용으로 관리형 재화를 구현하고 재화를 로컬에 저장합니다. 로컬 저장 재화 값에만 의존하지 않도록 강력히 권장합니다. 문제가 발생할 경우 지원을 제공할 수 없습니다. 이 문제가 발생할 경우 자체 관리형 재화 사용을 고려해야 할 수 있습니다.
spendCurrency
는 항목이나 콘텐츠 잠금 해제를 위해 재화를 차감할 때만 호출해야 합니다.
관리형 재화는 앱 ID당 1개 재화만 지원합니다. 여러 재화를 사용 중이라면 자체 관리형 재화를 사용해야 합니다.
잔액은 디바이스별 앱별로 저장되므로 디바이스 간 잔액 공유가 불가능합니다.
참고
탭조이는 사용자에게 최대한 신속하게 보상을 제공하기 위해 노력하지만, 즉시 보상이 이루어질 것을 보장할 수는 없습니다. 사용자에게 보상이 지급되기까지 걸리는 시간은 여러 요인에 따라 달라집니다. 베스트 프랙티스로, 동영상 광고 종료 시점 확인 외에도 정기적으로 잔액을 확인하고 앱 실행, 앱 재개, 레벨 사이, 스토어 로드 전 등 특정 앱 이벤트 발생 후에도 잔액을 확인해야 합니다. 또한 사용자에게 오퍼 완료까지 시간이 소요될 수 있음을 알리는 것을 권장합니다.