콘텐츠로 이동

소비 정보 전송 동의 여부 질의

'소비 정보 전송' 기능을 사용하려면 유저의 인앱 구매 상품에 대한 소비 정보 전송 동의 가 필요합니다. 이에 대해, Hive SDK에서는 유저에게 해당 소비 정보를 마켓에 전송할지의 동의 여부를 질의하는 기능 을 제공합니다.

Warning

Hive SDK의 '소비 정보 전송 동의 여부 질의하기' 기능은 SDK v4 iOS 25.0.0 이상부터 사용할 수 있습니다.

'소비 정보 전송'이란

'소비 정보 전송'은 게임에서 유저의 인앱 구매 상품에 대한 환불을 진행하기에 앞서 유저의 소비 수준 및 유저의 환불 성향 등을 분석할 수 있도록 유저의 소비 정보를 마켓으로 전송하는 기능입니다.
마켓에서는 해당 정보를 바탕으로 환불 기준을 제공하므로 게임에서는 유저의 부정 사용을 방지할 수 있습니다.

'소비 정보 전송' 기능은 Hive 서버 API로 제공되며, 해당 API 사용을 위한 자세한 내용은 Hive 서버 API > 소비 정보 전송 가이드를 참고하세요.

Note

'소비 정보 전송' 기능은 현재 Apple AppStore 마켓에서만 지원하며, 관련하여 상세 내용은 아래와 같습니다.

  • Apple AppStore를 통한 인앱 구매 후, 원활한 환불 처리 및 부정 행위 방지를 위해 Send Consumption Information API를 지원합니다.
  • 환불 정보를 Apple에 전송하기 위해서 유저로부터 개인정보 제3자 제공 동의 및 개인정보 국외 이전 동의를 받아야하므로, Hive SDK에서는 유저가 약관 고지 및 동의, 철회할 수 있는 UI를 제공합니다.

소비 정보 전송 동의 여부 질의하기

인앱 구매 상품에 대한 소비 정보 전송 동의 여부 질의하기 를 구현하려면, 먼저 Hive 콘솔에서 게임별로 소비 정보 전송 기능의 사용 여부를 설정해야 합니다. 관련하여 자세한 내용은 콘솔 가이드 > 빌링 > 부가 서비스 설정 가이드를 참고하세요.

Hive 콘솔에서 관련 사용 설정 이후, 소비 정보 전송 동의 여부 질의하기 는 Hive SDK에서 제공하는 아래의 두 가지 API를 사용하여 구현할 수 있습니다.

  • showConsumeInfoAgreement
  • getConsumeInfoAgreement

showConsumeInfoAgreement

showConsumeInfoAgreement API는 유저에게 소비 정보 전송 동의 여부를 질의하는 팝업 UI를 노출합니다. 유저가 인앱 상품을 구매할 때나 별도의 버튼을 눌렀을 때 해당 팝업 UI가 노출되도록 호출할 수 있으며, 호출 후 전송 동의 여부에 대한 결과를 ResultAPI와 Boolean으로 반환합니다.

상품 구매 또는 구매 완료 시점에 Hive SDK의 showConsumeInfoAgreement API를 호출하여 소비 정보 전송에 대한 유저의 의사를 물어보세요. 게임 내 '소비 정보 전송 동의 여부 질의' 팝업 UI을 노출할 수 있으며, 동의 여부에 대한 결과 값은 Hive 서버에서 저장하고 관리합니다.

showConsumeInfoAgreement API의 특징은 아래와 같습니다.

  • 인게임에서도 '소비 정보 전송 동의 여부 질의' 팝업 UI를 노출할 수 있습니다. 따라서 유저가 동의 내역을 언제든지 변경하거나 철회할 수 있습니다.
  • 첫 질의이거나 이전에 동의 거부한 유저에게는 소비 전송 '동의' 여부를 묻는 버튼이, 이전에 동의했던 유저에게는 소비 전송 '동의 철회' 여부를 묻는 버튼이 노출됩니다.

    전송 '동의' 여부 노출 예시 전송 '동의 철회' 여부 노출 예시
  • 만약 유저가 동의를 철회하더라도 '소비 정보 전송 동의 여부 질의' 팝업 UI를 재노출할 수 있습니다. 이 때, getConsumeInfoAgreement API를 호출하면 유저의 '마지막 동의 여부' 및 '마지막 응답 시점' 등 재노출에 필요한 정보를 얻을 수 있습니다. 이후, 게임에서는 전달 받은 해당 값을 참고하여 아래 예와 같이 팝업을 다시 노출할 수 있습니다.

    예: 철회 또는 취소 N일 후 재노출

getConsumeInfoAgreement

getConsumeInfoAgreement API는 유저의 마지막 응답 정보를 조회하여 그 결과를 ResultAPI와 객체로 반환합니다. getConsumeInfoAgreement API를 호출하면 유저의 동의 상태와 시점을 게임에서 따로 저장할 필요가 없으므로 리소스를 절약할 수 있습니다.

결과로 반환되는 객체에는 유저의 마지막 동의값(Boolean), 첫 응답 시기(Integer), 마지막 응답 시기(Integer) 정보가 포함됩니다. 한 번도 팝업을 노출한 적이 없는 유저에 대해서는 null 값이, 이전 응답 정보가 존재한다면 위 세 개 값이 하나의 객체로 반환됩니다.

예제 코드

소비 정보 전송 동의 여부 질의하기 구현을 위해 제공되는 API를 사용하는 예시 코드는 아래와 같습니다.

showConsumeInfoAgreement

using hive;    
IAPV4.showConsumeInfoAgreement((ResultAPI result, bool didAgree) => {    
  if (result.isSuccess()) {    
    // 유저가 약관에 동의했는지 거부했는지를 didAgree로 알아보세요.
  }    
});

getConsumeInfoAgreement

using hive;    
IAPV4.getConsumeInfoAgreement((ResultAPI result, IAPV4.IAPV4ConsumeInfoUserAgreement info) => {    
  if (result.isSuccess()) {    
    // info로부터 유저의 마지막 동의값과 응답 시기를 얻고, 팝업을 띄울지 결정하세요.
  }    
});

showConsumeInfoAgreement

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;    
IAPV4::showConsumeInfoAgreement([=](ResultAPI const & result, bool didAgree) {    
  if (result.isSuccess()) {    
    // 유저가 약관에 동의했는지 거부했는지를 didAgree로 알아보세요.
  }    
}

getConsumeInfoAgreement

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;    
IAPV4::getConsumeInfoAgreement([=](ResultAPI const & result, IAPV4ConsumeInfoUserAgreement* _Nullable const & info) {    
  if (result.isSuccess()) {    
    // info로부터 유저의 마지막 동의값과 응답 시기를 얻고, 팝업을 띄울지 결정하세요.
  }    
}

showConsumeInfoAgreement

import HIVEService    
IAPV4Interface.showConsumeInfoAgreement() { result, didAgree in    
  if result.isSuccess() {    
    // 유저가 약관에 동의했는지 거부했는지를 didAgree로 알아보세요.
  }    
}

getConsumeInfoAgreement

import HIVEService    
IAPV4Interface.getConsumeInfoAgreement() { result, info in    
  if result.isSuccess() {    
    // info로부터 유저의 마지막 동의값과 응답 시기를 얻고, 팝업을 띄울지 결정하세요.
  }    
}

showConsumeInfoAgreement

#import <HIVEService/HIVEService-Swift.h>    
[HIVEIAPV4 showConsumeInfoAgreementWithHandler:^(HIVEResultAPI * result, BOOL didAgree) {    
  if ([result isSuccess]) {    
    // 유저가 약관에 동의했는지 거부했는지를 didAgree로 알아보세요.
  }    
}];

getConsumeInfoAgreement

#import <HIVEService/HIVEService-Swift.h>    
[HIVEIAPV4 getConsumeInfoAgreementWithHandler:^(HIVEResultAPI * result, HIVEIAPV4ConsumeInfoUserAgreement * info) {    
  if ([result isSuccess]) {    
    // info로부터 유저의 마지막 동의값과 응답 시기를 얻고, 팝업을 띄울지 결정하세요.
  }    
}];