콘텐츠로 이동

미성년자 보호 법안 대응

Hive SDK에서는 미성년자 보호를 위한 앱스토어 책임법과 브라질 ECA에 대응하여 사용자 연령을 확인할 수 있는 Age Range 모듈을 제공합니다. 사용자 연령 확인을 의무화하는 연령 확인 법안 시행에 따라 스토어를 통해 앱을 배포하는 개발자는 Age Range 모듈을 적용하여 사용자 연령 범위를 확인하고 보호자 승인을 요청할 수 있습니다.


Age Range 동작 개요

Age Range 모듈은 getAgeRange API를 호출하여 사용자 연령 범위와 상태를 확인합니다. 응답 결과에 따라 국가별 정책에 맞는 콘텐츠를 제공하거나, 필요한 경우 showAgeRangeUpdatePermission API를 호출하여 보호자 승인을 요청합니다.

사용 시점

Age Range 모듈은 사용자 연령 확인 법안이 시행된 국가에서만 적용합니다.

Note
  • Hive SDK v4 26.0.1(Android/iOS)부터 제공합니다.
  • 법안이 시행되지 않은 국가에서는 Age Range 모듈을 적용하지 않아도 됩니다.
Warning

법안 시행 전에는 getAgeRange 호출 시 정상적인 사용자 상태를 반환하지 않습니다.

  • 연령 확인 법안 시행 전까지는 에러 응답을 수신할 수 있습니다.
  • Apple은 샌드박스 테스트 환경을 제공합니다. 관련하여 자세한 내용은 Apple 공식 공지문을 참고하세요.
  • 연령 확인 법안 시행 전까지는 Age Range 모듈을 추가하지 않아도 무방하며, 추가하여 호출하는 경우에도 PENDING 혹은 DENIED와 같은 명확한 동작 에러 응답 외에 나머지 에러는 무시할 수 있습니다.
  • 법안 시행 후에는 사용자 연령 및 상태 정보를 정상적으로 수신할 수 있습니다.

iOS 요구 사항

iOS에서 사용자 연령 범위 확인을 진행하려면 아래의 조건을 충족해야 합니다.

  • Xcode 26.2 이상
  • iOS 26.2 이상에서 기능 제공


Age Range 처리 흐름

OS별 구현 플로우

  • Android

    • Google Play, Amazon Appstore, Samsung Galaxy Store
  • iOS

    • Apple App Store
Note
  • Google Play는 브라질 ECA를 지원합니다. 브라질 사용자인 경우 DECLARED 상태를 반환하며, 앱은 해당 상태에서 연령 정보를 확인하여 연령에 맞는 콘텐츠를 제공해야 합니다.
  • Apple App Store는 브라질 ECA를 지원합니다. 법안 적용 대상인 경우 사용자의 연령 정보를 직접 제공하며, 연령 정보를 확인할 수 없는 경우 REQUIRED 상태를 반환합니다.
  • Amazon Appstore 및 Samsung Galaxy Store는 브라질 ECA를 지원하지 않으므로 브라질 관련 응답(DECLARED 등)을 반환하지 않습니다.
  • 본 가이드에서는 앱스토어 책임법에 대응하여 보호자 동의가 확인되지 않는 경우에는 앱 진입이 불가한 것으로 안내하고 있습니다. 다만, 실제 동작 방식은 각 앱의 서비스 정책 및 운영 정책에 따라 일부 다르게 적용될 수 있습니다.

국가별 처리 예시

적용 국가 주요 userState 게임 앱 처리
연령 확인 법안 미시행 국가 UNKNOWN 별도 처리 없이 게임을 계속 진행합니다.
미국 VERIFIED, SUPERVISED, SUPERVISED_APPROVAL_PENDING, SUPERVISED_APPROVAL_DENIED 사용자 연령 범위를 확인하여 연령에 맞는 콘텐츠를 제공합니다. SUPERVISED 상태에서 앱 내 중요한 변경 사항이 발생하면 showAgeRangeUpdatePermission API를 호출하여 보호자 승인을 요청합니다. 보호자 승인 진행 상태(SUPERVISED_APPROVAL_PENDING, SUPERVISED_APPROVAL_DENIED)는 게임 서비스 정책에 따라 기능 또는 콘텐츠를 제한할 수 있습니다.
브라질 DECLARED, REQUIRED DECLARED는 사용자 연령 범위를 확인하여 연령에 맞는 콘텐츠를 제공합니다. REQUIRED는 사용자 연령 정보를 설정하도록 안내합니다.

[사전 준비] Age Range 모듈 추가

Age Range 모듈을 사용하기 위한 사전 준비 사항으로 각 SDK의 개발 엔진 및 타깃 OS에 따라 Age Range 모듈을 추가 혹은 제거합니다.

SDK Native Android

Age Range 모듈 추가

  1. SDK 공통 설정의 market을 설정합니다.
  2. 모듈 수준의 build.gradle 파일에 다음을 추가합니다.
    implementation "com.com2us.android.hive:hive-agerange-google-agesignals"
    

Age Range 모듈 제거

모듈 수준의 build.gradle 파일에서 다음을 제거합니다.

// implementation "com.com2us.android.hive:hive-agerange-google-agesignals" // 미사용 시 이 라인 제거

SDK Native iOS

Age Range 모듈 추가

iOS의 경우, 앱스토어 책임법 관련 시스템 API는 iOS 26.2 이상에서만 지원됩니다.

  1. Podfile 예제 코드를 참고하여 Age Range 모듈 설정 내용을 추가합니다.

    target 'HIVE_GAME_COOL' do
      pod 'HiveAgeRangeApple', '${SDK_VERSION}'
      # 26.3.4 이후 '앱 내 중요한 변경 사항 알림 및 승인 요청' 선택 적용 가능
      pod 'HiveAgeRangePermissionApple', '${SDK_VERSION}'  # (26.3.4+ Optional)
    end
    

  2. SDK Native iOS 환경에서 아래 순서대로 Declared Age Range 권한을 추가합니다.

    1. Xcode 프로젝트 창의 프로젝트 네비게이터에서 개발자 프로젝트를 선택하세요.
    2. TARGETS 목록에서 개발자 앱을 선택하세요.
    3. Signing & Capabilities 탭을 클릭하세요.
    4. Signing & Capabilities 탭 좌측 상단에 있는 + Capability 버튼을 클릭하세요.
    5. 목록에서 Declared Age Range 를 선택해 추가합니다.
    6. Signing & Capabilities 목록에 추가된 Declared Age Range 를 확인할 수 있습니다.

Age Range 모듈 제거

Podfile 예제 코드를 참고하여 Age Range 모듈 설정 내용을 제거합니다.

target 'HIVE_GAME_COOL' do
end

SDK Cocos2d-x Android

SDK Native Android와 동일합니다.

SDK Cocos2d-x iOS

SDK Native iOS와 동일합니다.

SDK Unity Android

Android 타깃 Unity 환경에서 Age Range 모듈을 사용하려면 아래의 순서대로 설정합니다.

  1. Hive > ExternalDependency 메뉴를 클릭합니다.
  2. Market Settings 설정 아래 지원하는 마켓의 Age Range [Market] 항목을 체크합니다. Age Range 모듈은 지원하려는 스토어 모듈을 필요로 합니다.

※ Age Range 모듈을 사용하지 않으려면 체크를 해제합니다.
Age Range GoogleAge Range Apple 모듈을 사용하지 않으면 체크를 해제할 수 있습니다. Age Range AmazonAge Range Samsung 모듈은 각 상위의 스토어 모듈을 포함하면 자동으로 포함됩니다.

SDK Unity iOS

앱스토어 책임법 관련 시스템 API는 iOS 26.2 이상에서만 지원됩니다.

  1. [Hive > ExternalDependency] 메뉴를 클릭합니다.
  2. Market Settings 설정 아래 지원하는 마켓의 Age Range [Market] 항목을 체크합니다. Age Range 모듈은 지원하려는 스토어 모듈이 필요합니다.

※ Age Range 모듈을 사용하지 않으려면 체크를 해제합니다.
Age Range AppleAge Range Permission Apple 모듈을 사용하지 않으면 체크를 해제할 수 있습니다.

iOS 타깃 Unity 환경에서 Age Range 모듈을 사용하려면 아래 순서대로 Declared Age Range 권한을 추가합니다. Unity 에디터로 간편하게 설정할 수 있습니다.

  1. Unity 상단 메뉴에서 Hive 를 선택합니다.
  2. Build project post process setting > iOS 를 선택합니다.
  3. Hive PostProcess Editor(iOS)에서 Age Range 체크박스를 선택합니다.
  4. iOS project export 이후 Signing & Capabilities 목록에 추가된 Declared Age Range 을 확인할 수 있습니다.

SDK Unreal Engine Android

Android 타깃 Unreal Engine 환경에서 Age Range 모듈을 사용하려면 아래의 순서대로 설정합니다.

  1. Unreal Editor → Edit → Project Settings 메뉴를 선택합니다.
  2. Project Settings 좌측 패널에서 Hive SDK → Dependency → Android를 선택합니다.
  3. Hive Module → Enable AgeRange에 체크합니다.

    ※ AgeRange 모듈을 사용하지 않으려면 체크를 해제합니다.

SDK Unreal Engine iOS

iOS의 경우, 앱스토어 책임법 관련 시스템 API는 iOS 26.2 이상에서만 지원됩니다. iOS 타깃 Unreal Engine 환경에서 Age Range 모듈을 사용하려면 아래의 순서대로 설정합니다.

  1. Unreal Editor → Edit → Project Settings를 선택합니다.
  2. Project Settings 좌측 패널에서 Hive SDK → Dependency → iOS를 선택합니다.
  3. Hive Module → Enable AgeRange에 체크합니다.

    ※ AgeRange 모듈을 사용하지 않으려면 체크를 해제합니다.

  4. Declared Age Range 권한을 추가합니다.

    entitlements 파일에 아래 키를 추가하세요. entitlements 파일의 생성과 적용 방법은 Entitlements 설정 (iOS)을 참고하세요.

    <key>com.apple.developer.declared-age-range</key>
    <true/>
    

    IOSExport.cs의 entitlements 생성부에 아래 코드를 추가하세요. 수정 위치는 Entitlements 설정 (iOS)을 참고하세요.

    // Add
    // Age Range 모듈 사용을 위해 필요한 항목입니다.
    Text.AppendLine("\t<key>com.apple.developer.declared-age-range</key>");
    Text.AppendLine("\t<true/>");
    // Add End
    

사용자 연령 범위 및 승인 상태 요청

사용자의 연령 및 보호자 승인 상태를 확인하기 위해 런타임 앱에서 getAgeRange API를 호출합니다. 해당 API는 앱 실행 시마다 반드시 호출해야 하는 필수 항목은 아니며, 서비스 정책 또는 기능 요구사항에 따라 필요 시 호출할 수 있습니다. 다음과 같은 경우에 호출을 고려할 수 있습니다.

  • 앱 실행 시 사용자 연령 또는 보호자 승인 상태를 기반으로 기능 또는 콘텐츠를 제어해야 하는 경우
  • 앱 업데이트로 인해 연령 등급에 영향을 줄 수 있는 변경 사항이 있는 경우
  • 보호자 재동의가 필요한 상황(중대한 변경 등)이 발생한 경우

앱에서 자체적인 연령 확인 기능을 제공하는 경우에도, Age Range API를 먼저 호출하여 스토어에서 제공하는 사용자 연령 정보를 우선 활용하는 것을 권장합니다.

getAgeRange API 호출

getAgeRange API를 호출하면 사용자 상태(userState)와 연령 범위(ageLower, ageUpper)를 반환합니다.

사용자 연령 범위를 요청하는 getAgeRange API 호출 예제 코드는 다음과 같습니다.

API Reference: Unity ®

using hive;

AuthV4.getAgeRange((ResultAPI result, AgeRange ageRange) => {    
    if (result.isSuccess()) {    
        // API call success    
    }    
});

API Reference: C++

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;
using namespace hive;

AuthV4::getAgeRange([=](ResultAPI const & result, AgeRange const & ageRange) {
    if (result.isSuccess()) {    
        // API call success    
    }
});

API Reference: Kotlin

import com.hive.AuthV4;
import com.hive.ResultAPI;

AuthV4.getAgeRange(object : AuthV4.AuthV4GetAgeRangeListener {
    override fun onAuthV4GetAgeRange(result: ResultAPI, ageRange: AuthV4.AgeRange?) {
        if (result.isSuccess) {    
            // API call success
        } 
    }
})

API Reference: Java

import com.hive.AuthV4;
import com.hive.ResultAPI;

AuthV4.getAgeRange((resultApi, ageRange) -> {
    if (result.isSuccess()) {
        // API call success  
    }
});

API Reference: Swift

import HIVEService    

AuthV4Interface.getAgeRange() { result, ageRange in    
    if result.isSuccess() {    
        // API call success    
    }    
}

API Reference: Objective-C

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 getAgeRange:^(HIVEResultAPI *result, HIVEAgeRange *ageRange) {
    if ([result isSuccess]) {
        // API call success    
    }    
}];
#include "HiveAuthV4.h"

FHiveAuthV4::GetAgeRange(FHiveAuthV4OnGetAgeRangeDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveAuthV4AgeRange& AgeRange) {
    if (Result.IsSuccess()) {
            // 호출 성공
    }
}));

getAgeRange API 호출 성공 시

getAgeRange 호출이 성공하면 userStateageLower, ageUpper를 이용하여 사용자 연령 및 승인 상태를 확인할 수 있습니다.

연령 확인 법규가 적용되는 지역에서는 기본적으로 다음 연령 범위를 제공합니다. (지역별 정책에 따라 변경될 수 있습니다.)

  • 0~12세
  • 13~15세
  • 16~17세
  • 18세 이상
Note

Apple App Store는 userStateSUPERVISED인 상태에서 앱 내 중요한 변경 사항이 발생한 경우 showAgeRangeUpdatePermission API를 호출하여 보호자에게 변경 사항을 알리고 승인을 요청합니다.

userState 게임 앱 처리
UNKNOWN 연령 확인 법규가 적용되지 않는 지역입니다. 별도 처리 없이 게임을 계속 진행합니다.
VERIFIED 사용자 연령 범위(ageLower, ageUpper)를 확인하여 연령에 맞는 콘텐츠를 제공합니다.
SUPERVISED 사용자 연령 범위(ageLower, ageUpper)를 확인하여 연령에 맞는 콘텐츠를 제공합니다. 앱 내 중요한 변경 사항이 발생한 경우 showAgeRangeUpdatePermission API를 호출하여 보호자 승인을 요청합니다.
SUPERVISED_APPROVAL_PENDING 보호자 승인이 진행 중인 상태입니다. 사용자 연령 범위(ageLower, ageUpper)를 확인하여 연령에 맞는 콘텐츠를 제공하며, 게임 서비스 정책에 따라 기능 또는 콘텐츠를 제한할 수 있습니다.
SUPERVISED_APPROVAL_DENIED 보호자 승인이 거부된 상태입니다. 사용자 연령 범위(ageLower, ageUpper)를 확인하여 연령에 맞는 콘텐츠를 제공하며, 게임 서비스 정책에 따라 기능 또는 콘텐츠를 제한할 수 있습니다.
REQUIRED 사용자 연령 정보를 확인할 수 없는 상태입니다. 스토어 앱 또는 기기 설정에서 연령 정보를 설정하도록 안내합니다.
DECLARED 사용자 연령 범위(ageLower, ageUpper)를 확인하여 연령에 맞는 콘텐츠를 제공합니다.

getAgeRange API 호출 실패 시

게임 앱에서 getAgeRange API 요청 후 호출에 실패하면 아래와 같은 ResultAPI 실패 코드가 수신됩니다.

/*
 * RESPONSE_FAIL, NETWORK, DEVELOPER_ERROR, NOT_SUPPORTED
 */
ResultAPI.isSuccess() == false

API 호출 오류는 최신 버전이 아닌 스토어 앱을 사용하는 등의 다양한 이유로 발생할 수 있습니다.

세션 진행 중에 오류가 발생한 경우, 최대 API 호출 재시도 횟수를 초과하면 호출을 종료하는 방식과 같이 최대한 사용자 환경을 방해하지 않도록 구현해야 합니다.

getAgeRange API 응답 데이터

getAgeRange API 응답 필드에 대한 설명은 아래와 같습니다. 각 필드 값을 활용하여 연령에 따른 게임 프로세스를 제공할 수 있습니다.

응답 값은 변경될 수 있으며, 최신 값을 원하시면 앱이 열릴 때 API 응답을 요청하세요.

Response field Values Description
userState VERIFIED 사용자가 만 18세 이상입니다.
SUPERVISED 사용자에게 부모가 연령을 설정한 감독 대상 계정이 있습니다. ageLowerageUpper를 사용하여 사용자의 연령대를 확인합니다.
SUPERVISED_APPROVAL_PENDING 사용자에게 감독 대상 계정이 있으며, 감독 부모가 아직 하나 이상의 대기 중인 중요한 변경 사항을 승인하지 않았습니다. ageLowerageUpper를 사용하여 사용자의 연령대를 확인합니다. mostRecentApprovalDate를 사용하여 승인된 마지막 중요한 변경 사항을 확인합니다.
SUPERVISED_APPROVAL_DENIED 사용자에게 관리 대상 계정이 있으며, 관리 대상 사용자의 부모가 하나 이상의 중요한 변경 사항에 대한 승인을 거부했습니다. ageLower, ageUppermostRecentApprovalDate를 사용하여 마지막으로 승인된 중요한 변경 사항을 확인하세요.
UNKNOWN 연령 확인 대상이 아닙니다. 해당 관할권 및 지역 외 사용자이거나, 만 18세 이상 혹은 미만일 수도 있습니다. ‘콘솔 > 프로비저닝 > SDK 설정’에서 ‘사용자 연령 확인’을 ‘확인 안 함’으로 설정하면 UNKNOWN 응답을 받습니다.
REQUIRED 해당 관할권 및 지역에서 사용자가 확인 또는 감독되지 않았습니다. 이러한 사용자는 만 18세 이상일 수도 있고 미만일 수도 있습니다. 연령 확인을 받으려면 사용자에게 기기 설정 및 스토어 앱을 방문하여 상태를 확인하도록 요청하세요.
DECLARED 사용자, 부모 또는 법적 보호자가 사용자의 연령을 신고했습니다. ageLower, ageUpper를 사용하여 사용자의 연령대를 확인합니다.
ageLower 0 to 18 감독 대상 사용자의 연령 범위의 하한 (포함)입니다. ageLowerageUpper를 사용하여 사용자의 연령대를 확인합니다.
-1 userState가 UNKNOWN, REQUIRED입니다.
ageUpper 2 to 18 감독 대상 사용자의 연령 범위의 상한 (포함)입니다. ageLowerageUpper를 사용하여 사용자의 연령대를 확인합니다.
-1 사용자가 만 18세 이상이거나 userState가 UNKNOWN, REQUIRED입니다.
mostRecentApprovalDate Datestamp 승인된 가장 최근의 중요한 변경 사항의 날짜입니다.
Ex) "2023-07-01T00:00:00.008Z"
Apple App Store는 지원하지 않습니다.
Samsung Galaxy Store는 YYYY-MM-DD 형태의 데이터를 반환합니다.
Empty (a blank value) userState가 SUPERVISED이며 제출된 큰 변화가 없습니다. 또는 userState가 UNKNOWN, REQUIRED입니다.
Apple App Store는 지원하지 않습니다.
ageRangeId App Store generated ID 스토어에서 생성된 식별자 ID입니다.
Google Play Store : Google Play에서 감독 대상 사용자 설치에 할당한 ID로 installID입니다. 앱 승인 취소를 알리는 데 사용됩니다. 앱 승인 취소 관련 문서를 검토합니다.
Amazon App Store : 아마존 계정의 userId입니다.
Apple App Store : 지원하지 않습니다.
Samsung Galaxy Store: 삼성 갤럭시 스토어에서 생성된 ID입니다.
Empty (a blank value) userState가 UNKNOWN, REQUIRED입니다.
Apple App Store는 지원하지 않습니다.


앱 내 중요한 변경 사항 알림 및 승인 요청

일부 관할권 및 지역의 규정에 따라 게임 앱에 아래와 같은 변경 사항이 발생하는 경우, 게임 앱 측에서는 보호자(부모)에게 변경 사항을 알리고, 미성년자인 사용자가 해당 앱을 계속 사용하도록 승인을 요청해야 합니다.

  • 수집·저장·공유되는 데이터 변경
  • 연령 등급 변경
  • 새로운 인앱 구매나 광고 기능 추가
  • 사용자 경험 변경 등

게임 앱 측에서는 변경 사항을 언제 알리고 승인을 요청하는지 결정할 수 있습니다. 각 스토어별 변경 사항 알림 방법은 아래와 같습니다.

showAgeRangeUpdatePermission API

Apple App Store 마켓으로 배포하는 앱인 경우 앱에서 직접 showAgeRangeUpdatePermission API를 호출하여 보호자(부모)에게 중요한 변경 사항을 알리고 승인을 요청합니다.

Hive SDK 26.3.4부터 showAgeRangeUpdatePermission API를 사용하려면 HiveAgeRangePermissionApple 모듈을 추가해야 합니다. 자세한 내용은 SDK Native iOS 항목을 참고하세요.

showAgeRangeUpdatePermission API를 호출하는 예제 코드는 아래와 같습니다.

API Reference: Unity ®

using hive;

String description = "This update adds video calling and location sharing features.";

AuthV4.showAgeRangeUpdatePermission(description, (ResultAPI result, AgeRange ageRange) => {    
    if (result.isSuccess()) {    
        // API call success    
    }    
});

API Reference: C++

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;
using namespace hive;

std::string description = "This update adds video calling and location sharing features.";

AuthV4::showAgeRangeUpdatePermission(description, [=](ResultAPI const & result, AgeRange const & ageRange) {
    if (result.isSuccess()) {    
        // API call success    
    }    
});

API Reference: Kotlin

import com.hive.AuthV4;
import com.hive.ResultAPI;

val description: String = "This update adds video calling and location sharing features."

AuthV4.showAgeRangeUpdatePermission(description, object : AuthV4.AuthV4GetAgeRangeListener {
    override fun onAuthV4GetAgeRange(result: ResultAPI, ageRange: AuthV4.AgeRange?) {
        if (result.isSuccess) {    
            // API call success
        } 
    }
})

API Reference: Java

import com.hive.AuthV4;
import com.hive.ResultAPI;

String description = "This update adds video calling and location sharing features.";

AuthV4.showAgeRangeUpdatePermission(description, (resultApi, ageRange) -> {
    if (result.isSuccess()) {
        // API call success  
    }
});

API Reference: Swift

import HIVEService    

let description = "This update adds video calling and location sharing features."

AuthV4Interface.showAgeRangeUpdatePermission(description) { result, ageRange in    
    if result.isSuccess() {    
        // API call success    
    }    
}

API Reference: Objective-C

#import <HIVEService/HIVEService-Swift.h>

NSString *description = "This update adds video calling and location sharing features.";

[HIVEAuthV4 showAgeRangeUpdatePermission: description handler:^(HIVEResultAPI *result, HIVEAgeRange *ageRange) {
    if ([result isSuccess]) {
        // API call success    
    }    
}];
#include "HiveAuthV4.h"

FString Description = TEXT("This update adds video calling and location sharing features.");

FHiveAuthV4::ShowAgeRangeUpdatePermission(Description, FHiveAuthV4OnShowAgeRangeUpdatePermissionDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveAuthV4AgeRange& AgeRange) {
    if (Result.IsSuccess()) {
            // 호출 성공
    }
}));

보호자 승인 철회 알림

보호자(부모)는 앱 내 중요한 변경 사항 알림에 대한 승인을 했더라도 이후 승인을 취소할 수 있습니다. 승인을 취소하면 미성년자인 사용자는 더 이상 앱에 액세스할 수 없습니다.

보호자 승인 취소 시, 각 스토어를 통한 철회 알림 확인 방법은 아래와 같습니다.

  • Google Play: 연령 신호 페이지에서 installID 목록을 다운로드하면 철회 사실을 확인할 수 있습니다.
    • Google Play의 installID는 3개월 동안 유효하며 이후 삭제됩니다.
  • Apple App Store: 승인 취소에 관한 알림을 보냅니다.
  • Amazon Appstore: 개발자 콘솔의 보고 섹션에서 Amazon userId를 다운로드하면 철회 사실을 알 수 있습니다.
  • Samsung Galaxy Store: 보호자 승인 철회 알림이 별도로 오지 않으므로 getAgeRange API를 호출하여 반환된 상태값으로 확인할 수 있습니다.


Age Range 테스트

Hive SDK에서는 연령 확인 법안 시행 유무에 상관없이 getAgeRange API 요청 시 정상 응답을 수신할 수 있는 테스트 환경과 테스트 케이스를 제공합니다.

Age Range 테스트 환경 및 테스트 케이스는 Android 타깃 개발 환경에서만 사용할 수 있으며, 디버그 모드 설정을 통해 API 동작을 시뮬레이션할 수 있습니다.

Note

iOS 타깃 개발 환경에서 Age Range 기능을 테스트하려면 Apple에서 제공하는 샌드박스 테스트 도구를 사용할 수 있습니다. Apple 샌드박스 계정으로 로그인해서 테스트하세요.

디버그 모드 사용 설정

Android 타깃 개발 환경에서 디버그 모드를 설정하려면 아래의 명령어를 실행합니다. 디버그 모드는 Hive ZoneType.SANDBOX에서 동작합니다.

$ adb shell setprop debug.hive.agerange.testcase 1~12

디버그 모드 설정은 게임 앱에서 동작을 확인하기 위한 단위 테스트 또는 통합 테스트 용도로만 사용하세요.

테스트 케이스별 데이터 응답

Android 타깃 개발 환경에서 디버그 모드 설정 후 각 테스트 케이스별로 Google Play Store에서 반환하는 데이터 응답은 아래와 같습니다.

TestCase userStatus ageLower ageUpper mostRecentApprovalDate ageRangeId Description
1 VERIFIED 18 -1 Empty Empty 18세 이상이며 나이가 확인된 사용자에 대한 응답입니다.
2 REQUIRED -1 -1 Empty Empty 연령 확인 및 동의 여부를 확인할 수 없는 사용자에 대한 응답입니다.
3 SUPERVISED 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 0세부터 12세(포함) 사이의 사용자를 위한 응답입니다.
4 SUPERVISED 13 15 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 13세부터 15세(포함) 사이의 사용자를 위한 응답입니다.
5 SUPERVISED 16 17 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 16세에서 17세 사이의 사용자(포함)에 대한 응답입니다.
6 SUPERVISED_APPROVAL_DENIED 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 동의 여부가 보류 중이거나 동의가 이루어지지 않은 18세 미만 사용자에 대한 응답입니다.
7 UNKNOWN -1 -1 Empty Empty 연령 확인 법이 적용되지 않는 모든 상황에 대한 응답입니다.
8 UNKNOWN -1 -1 Empty Empty API가 ResultAPI.RESPONSE_FAIL 상태를 반환할 때의 응답입니다. (APP_NOT_OWNED)
9 UNKNOWN -1 -1 Empty Empty API가 ResultAPI.RESPONSE_FAIL 상태를 반환할 때의 응답입니다. (CLIENT_TRANSIENT_ERROR)
10 UNKNOWN -1 -1 Empty Empty API가 ResultAPI.RESPONSE_FAIL 상태를 반환할 때의 응답입니다. (INTERNAL_ERROR)
11 UNKNOWN -1 -1 Empty Empty API가 ResultAPI.RESPONSE_FAIL 상태를 반환할 때의 응답입니다. (API_NOT_AVAILABLE)
12 DECLARED 13 15 Empty 550e8400-e29b-41d4-a716-446655441111 사용자, 부모 또는 법적 보호자가 사용자의 연령을 신고한 상태이며, 사용자 연령 정보를 13세에서 15세로 신고한 사용자에 대한 응답입니다.