자체 관리형 재화
보상 콜백을 구성하고 서버에서 거래를 처리하여 자체 관리형 가상 재화로 탭조이 오퍼월을 설정합니다.
읽는 시간 3분최근 업데이트: 2일 전
자체 관리형 재화는 사용자의 재화를 자체 서버로 처리할 때 사용합니다. 이 방법을 사용하면 사용자의 재화를 더 세부적으로 제어할 수 있지만, 모든 사용자의 재화 금액을 저장하고 처리하는 백엔드 작업을 개발자가 완전히 담당해야 한다는 뜻이기도 합니다. getRealeBalance, awardReale, 또는 spendReale는 관리형 재화에서만 사용 가능합니다. 탭조이는 자체 관리형 재화에 대해 클라이언트 측/앱 측 알림을 제공하지 않습니다. 콜백 서버를 호출할 때 앱과 사용자에게 알리는 것은 귀사의 책임입니다. 자체 관리형 재화를 사용하려면 콜백 서버를 설정해야 합니다. 탭조이는 사용자에게 최대한 신속하게 보상을 제공하기 위해 노력하지만, 즉시 보상이 이루어질 것을 보장할 수는 없습니다. 사용자에게 보상이 지급되기까지 걸리는 시간은 여러 요인에 따라 달라집니다. 베스트 프랙티스로, 정기적으로 또는 앱 실행, 앱 재개, 레벨 사이, 동영상 광고 종료, 스토어 로드 전 등 특정 앱 이벤트 발생 후 업데이트된 잔액을 확인해야 합니다. 또한 사용자에게 오퍼 완료까지 시간이 소요될 수 있음을 알리는 것을 권장합니다.
콜백 URL
사용자가 오퍼 완료로 재화를 획득하면, 이 URL로 HTTP GET 요청을 수행합니다. 파라미터 형식은 다음과 같습니다.기본 요청 파라미터에는 snuid와 통화(사용자 계정에 추가할 재화 금액), 사용자의 Wi-Fi MAC 주소(사용 가능한 경우)가 포함됩니다.<callback_url>?snuid=<user_id>¤cy=<currency>&mac_address=<mac_address>//Examplehttp://www.sampledoman.com/payments/offers/tapjoy?&snuid=42&currency=50&mac\_address=00-16-41-34-2C-A6
서버 응답
탭조이 서버는 서버의200403서버 응답 | 사례 |
|---|---|
|
|
|
|
탭조이는 약 5분 간격으로 4일 동안 콜백을 재시도합니다. 탭조이의 알고리즘은 서버 응답 시간이 5초를 초과할 경우 요청을 실패로 처리합니다.
부정 행위 감지 및 예방을 위한 선택적 파라미터
Dashboard > Monetize > Virtual Currency > Create/Edit에서 가상 재화 비밀 키에 액세스할 수 있습니다. 이 키는 애플리케이션 SDK 키와 다릅니다. 이 가상 재화 비밀 키를 사용하여 콜백에 서명합니다. 재화에 비밀 키(secret_key=파라미터 | 설명 | 참고 |
|---|---|---|
| 특정 재화를 표시하는 식별자로, 항상 고유합니다. | |
| ID, SNUID, 재화 및 비밀 키의 MD5 해시입니다. |
항상 조심해야 할 부정 행위 시나리오
- ID가 재사용되거나 검증자가 잘못된 경우, 해당 콜백 URL은 탭조이에서 전송된 것이 아니므로 사기로 간주해야 합니다.
- 사용자 ID가 오직 정수만으로 구성되어 있다면, 사용자 ID가 조작되지 않았는지 확인하기 위한 간단한 검증을 수행할 것을 권장합니다. 예를 들어, 탭조이는 “001234”와 “1234”를 서로 다른 두 개의 사용자 ID로 간주하지만, 백엔드 서버 로직에서는 그렇지 않을 수 있습니다.
검증자
검증자는 ID, SNUID, 재화, 비밀 키를 콜론(:)으로 구분하여 MD5 해시를 계산하여 생성됩니다. Ruby 코드에서는 다음과 같습니다.서버는 검증자를 재계산하고 일치하지 않는 요청은 모두 거부해야 합니다. 검증자가 일치하지 않으면 서버는 403 Forbidden로 응답해야 합니다.Digest::MD5.hexdigest("#{id}:#{snuid}:#{currency}:#{secret_key}")
콜백 URL 개선
위에 나열된 콜백을 더 많은 정보와 보안으로 개선했습니다. 이 개선된 버전을 사용하시려면 세일즈 담당자나 지원팀에 문의하여 해당 콜백 버전을 활성화하는 데 도움을 받으시기 바랍니다. 사용자가 오퍼를 완료하여 재화를 획득하면, 제공하신 URL로 POST 요청을 수행합니다. 파라미터 형식은 다음과 같습니다.{ "cp": "some_string", "currency": { "currency_sale": "1.0", "id": "reward_id", "reward": 100 }, "id": "some_id", "offer": { "advertiser_app_name": "a_cool_app", "currency": { "max_reward_value": 1360 }, "expires_at": 1768175428, "icon_url": "some_URL/icon.jpg", "name": "eye_catching_headline", "task":{ "is_iap": false, "name": "event_name" }, "type": "" }, "placement":{ "content_type": "offerwall", "name": "placement_name" }, "rev": 100, "timestamp": 1762993750, "user": { "id": "user_id" }}
파라미터 | 유형 | 설명 |
|---|---|---|
| 문자열 | 이 요청에 대한 고유한 보상 ID |
| 더블 | 획득한 USD 달러 수익 |
| 문자열 | SDK를 통해 setCustomParameter 메서드로 전달된 커스텀 파라미터 |
| 문자열 | 이 재화의 고유한 식별자 |
| integer | 사용자에게 보상되는 재화 금액 |
| 플로트 | 재화 세일 멀티플라이어(해당하는 경우) |
| integer | 사용자가 이 오퍼의 모든 작업을 완료하면 얻을 수 있는 최대 재화입니다. |
| 문자열 | 광고주 오퍼의 이름 |
| 문자열 | 현재 지원되지 않음 |
| 문자열 | 오퍼 URL 아이콘 |
| 문자열 | 광고주 앱 이름 |
| 문자열 | 사용자가 보상을 받는 완료된 작업의 이름 또는 설명입니다. |
| 부울 | 보상 이벤트가 IAP 이벤트를 위한 것일 경우 true입니다. |
| timestamp | 사용자가 더 이상 이 오퍼에 대한 보상을 받을 수 없는 타임스탬프(초)입니다. |
| 문자열 | 이 전환과 관련된 플레이스먼트 |
| 문자열 | 사용되는 플레이스먼트 유형 |
| 문자열 | setUserID 메서드를 통해 SDK를 통해 전달되는 사용자 ID |
| timestamp | 이 거래의 타임스탬프 |
서명이 있는 탭조이 헤더 예시:HMAC_SHA-256(<Request-Body>,<Secret-Key>)
X-Tapjoy-Signature => 7205ccfdfa1fe28cd05a1b56a9508d898cc938aa555a6c18848097fe4ee0975b
사용자 ID
자체 관리형 재화를 사용하는 경우 사용자 ID를 설정하는 것이 매우 중요합니다. 이 값은 콜백 URL에서snuidsetUserID// Recommended approach using connect flagNSDictionary *connectFlags = @{TJC_OPTION_USER_ID : @"<USER_ID_HERE>"};[Tapjoy connect:@"SDK_KEY_GOES_HERE" options:connectFlags];// Setting the user id directly[Tapjoy setUserIDWithCompletion:@"<USER_ID_HERE>" completion:^(BOOL success, NSError *error) {}];
사용자 잔액 설정
플레이스먼트 요청 시마다 탭조이에 사용자의 현재 잔액을 알려줄 수 있습니다. 플레이스먼트 콘텐츠를 요청하기 전에 반드시 이 값을 설정해야 합니다.TJPlacement *placement = [TJPlacement placementWithName:@"placementName" delegate:nil]; [placement setBalance:100 forCurrencyId:@"1234" withCompletion:^(NSError * _Nullable error) { if (error != nil) { //Failure NSString *message = error.localizedDescription; } else { //Success } }];
필수 금액
잔액을 설정하면 플레이스먼트 시 필요한 금액 값도 설정할 수 있습니다.TJPlacement* placement = [TJPlacement placementWithName:@"placementName" delegate:nil]; placement setRequiredAmount:100 forCurrencyId:@"1234" withCompletion:^(NSError * _Nullable error) { if (error != nil) { //Failure NSString *message = error.localizedDescription; } else { //Success } } ``` </Tab><Tab title="iOS (Swift)"> ```swift let placement = TJPlacement(name: "placementName", delegate: nil) placement?.setRequiredAmount(100, forCurrencyId: "1234", withCompletion: { error in if let error = error { //Failure let message = error.localizedDescription } else { //Success } })
보상 콜백 IP 화이트리스트
보상 콜백 서버에 접근 권한(화이트리스트)이 필요한 경우, 다음은 탭조이의 IP 목록입니다. (마지막 수정: 2024년 5월 12일)18.215.207.8918.235.142.16523.20.255.11323.23.134.1653.210.188.323.215.42.1403.217.209.1773.218.95.353.219.236.533.231.137.161
탭조이 관리형에서 자체 관리형으로 전환
앱을 아직 출시하지 않은 경우, 탭조이 대시보드의 Edit Virtual Currency 화면에서 탭조이 관리형 재화를 자체 관리형 재화로 전환할 수 있습니다. 콜백 URL 필드에 올바른 형식의 URL을 입력해야 합니다. 그렇지 않으면 변경 사항이 실제로 적용되지 않습니다. 탭조이가 관리하는 재화를 사용하는 출시된 앱의 경우 전환 과정이 더 복잡합니다. 다음은 고려해야 할 몇 가지 사항입니다.- 새 SDK 키로 새 앱을 생성해야 합니다. 이렇게 하면 최신 버전으로 업그레이드하지 않은 이전 버전 앱 사용자에게 영향을 미치지 않습니다. 셀프 관리형 재화 버전의 앱에 동일한 SDK 키를 사용하면, 탭조이 관리형 재화 버전의 모든 사용자가 오퍼 완료 시 보상을 받지 못하게 됩니다.
- 기존 앱 ID를 참조하는 모든 광고 캠페인을 비활성화하고, 새 앱 ID를 참고하도록 광고 캠페인을 재구성해야 합니다.
- 자체 관리형으로 전환하려면 앱에서 코드를 변경해야 합니다. getCurrencyBalance, awardCurrency, spendCurrency는 관리형 재화에서만 사용 가능하므로 사용할 수 없습니다.
- 변경을 고려하기 전에 세일즈 담당자에게 문의하는 것이 좋습니다.
- 자체 관리형 재화에서 탭조이 관리형 재화로의 전환은 불가능합니다. 변경을 진행하기 전에 반드시 전환 의사를 확인하시기 바랍니다.
- 첫 실행 시 기존 SDK 키(탭조이 관리형 재화 사용)로 getCurrencyBalance 호출하여 잔액을 조회합니다.
- getCurrencyBalance에서 반환된 값으로 잔액을 업데이트합니다.
- 이후 모든 실행에서는 새 SDK 키를 사용합니다.