컴플라이언스
컴플라이언스(Compliance)는 지속 가능한 비즈니스와 사용자 보호를 위해 게임 앱에서 준수해야 하는 법률 및 규정, 정책을 대응할 수 있도록 하이브 SDK에서 제공하는 기능입니다.
본 가이드에서는 하이브 SDK 컴플라이언스에서 지원하는 법규, 윤리적, 행정적 규제 사항과 이에 관한 적용 방법을 설명합니다.
앱스토어 책임법 대응을 위한 사용자 연령 범위 확인¶
2026년 1월 1일부터 미국 텍사스, 유타, 루이지애나 등 몇몇 주에서는 마켓플레이스에서 사용자 연령을 확인하여 미성년자인 경우 보호자(부모)의 승인을 얻은 사용자만 게임을 진행할 수 있는 법안이 시행됩니다. 이에 따라 해당 주의 마켓플레이스를 통해 앱을 배포하는 개발자는 SDK에서 제공하는 Age Range API 를 사용하여 사용자 연령 범위를 확인하고 보호자 승인을 요청해야 합니다.
Note
본 가이드는 2026년 1월 1일 텍사스에서 시행되는 미국 내 해당 주의 연령 확인 법안을 준수하여 작성되었습니다.
Age Range API에서 제공하는 기능은 아래와 같습니다.
- 사용자의 상태 및 연령대를 요청하고 확인 → getAgeRange API
- 앱 내 중요한 변경사항 알림
- showAgeRangeUpdatePermission API (Apple App Store만 지원)
- 보호자 승인 철회 알림
Warning
2026년 1월 1일까지는 Age Range API를 호출해도 예외 응답을 수신할 수 있으며, Apple App Store로 배포한 경우 응답이 없습니다.
2026년 1월 1일부터 Age Range API를 호출하면 실시간 응답을 반환합니다.
Age Range API 동작 플로우¶
게임 앱에서 Age Range API 요청 후, 호출 성공 혹은 호출 실패에 따른 동작 플로우는 아래와 같습니다.
getAgeRange API 호출 성공 시¶
응답값인 userState에 따른 게임 앱 동작 프로세스는 아래와 같습니다.
UNKNOWN,VERIFIED,SUPERVISED중 하나 : 앱을 진행하고 연령에 맞는 콘텐츠를 제공SUPERVISED이면서 앱 내 중요한 변경 사항 알림 시 : Apple App Store로 배포한 게임에 한해 showAgeRangeUpdatePermission API 호출
SUPERVISED_APPROVAL_PENDING혹은SUPERVISED_APPROVAL_DENIED:- 미성년자가 앱을 계속 사용하도록 동의하는 요청에 대한 보호자(부모) 승인이 아직 보류 중이거나 거부된 상태로, 연령을 확인하고 앱 진행 가능
REQUIRED: 해당 관할권 및 지역에서 사용자 연령이 확인되지 않은 상태로, 마켓플레이스 앱이나 기기 설정에서 연령 정보를 공유하도록 안내하여 앱에서 연령을 확인할 수 있도록 유도
getAgeRange API 호출 실패 시¶
앱에서 Age Range API 요청 후 호출이 실패하면 ResultAPI 실패 코드가 수신됩니다. ResultAPI 실패 코드 예시는 아래와 같습니다.
API 호출 오류는 최신 버전이 아닌 마켓플레이스 앱을 사용하는 등의 다양한 이유로 발생할 수 있습니다.
세션 진행 중에 오류가 발생한 경우, 최대 API 호출 재시도 횟수를 초과하면 호출을 종료하는 방식과 같이 최대한 사용자 환경을 방해하지 않도록 구현해야 합니다.
마켓플레이스별 동작 플로우¶
Age Range API에서 지원하는 마켓플레이스 별 API 요청 및 처리 플로우는 아래와 같습니다.
getAgeRange API¶
사용자의 상태 및 연령 정보를 요청하기 위해 런타임 앱에서 getAgeRange API를 호출합니다. 본 컴플라이언스에 의한 법규 외에도 앱에서 별도의 연령 확인 절차가 있다면 getAgeRange API를 먼저 호출하여 연령을 확인하는 것이 좋습니다.
getAgeRange API를 호출하면 연령 확인 법규에 해당되는 지역에 거주하는 사용자의 상태 데이터 userState와 연령 범위가 응답으로 반환됩니다. 해당 관할 지역에 한해 반환되는 기본 연령 범위는 아래와 같으며 지역별 요건에 따라 변경될 수 있습니다.
- 0~12세
- 13~15세
- 16~17세
- 18세 이상
getAgeRange API 호출¶
사용자 연령 범위를 요청하는 getAgeRange API 호출 예제 코드는 다음과 같습니다.
getAgeRange API 응답¶
getAgeRange API 응답 필드에 대한 설명은 아래와 같습니다. 각 필드 값을 활용하여 연령에 따른 게임 프로세스를 제공할 수 있습니다.
응답값은 변경될 수 있으며, 최신 값을 원하시면 앱이 열릴 때 API 응답을 요청하세요.
| Response field | Values | Description |
|---|---|---|
userState | VERIFIED | 사용자가 만 18세 이상입니다. |
| SUPERVISED | 사용자에게 부모가 연령을 설정한 감독 대상 계정이 있습니다. ageLower 및 ageUpper 를 사용하여 사용자의 연령대를 확인합니다. | |
| SUPERVISED_APPROVAL_PENDING | 사용자에게 감독 대상 계정이 있으며, 감독 부모가 아직 하나 이상의 대기 중인 중요한 변경사항을 승인하지 않았습니다. ageLower 및 ageUpper를 사용하여 사용자의 연령대를 확인합니다. mostRecentApprovalDate 를 사용하여 승인된 마지막 중요한 변경사항을 확인합니다. | |
| SUPERVISED_APPROVAL_DENIED | 사용자에게 관리 대상 계정이 있으며, 관리 대상 사용자의 부모가 하나 이상의 중요한 변경사항에 대한 승인을 거부했습니다. ageLower, ageUpper 및 mostRecentApprovalDate 를 사용하여 마지막으로 승인된 중요한 변경 사항을 확인하세요. | |
| UNKNOWN | 해당 관할권 및 지역 외 사용자 입니다. 이러한 사용자는 만 18세 이상일 수도 있고 미만일 수도 있습니다. | |
| REQUIRED | 해당 관할권 및 지역에서 사용자가 확인 또는 감독되지 않았습니다. 이러한 사용자는 만 18세 이상일 수도 있고 미만일 수도 있습니다. 연령 확인을 받으려면 사용자에게 기기 설정 및 마켓플레이스 앱을 방문하여 상태를 확인하도록 요청하세요. | |
ageLower | 0 to 18 | 감독 대상 사용자의 연령 범위의 하한 (포함)입니다. ageLower 및 ageUpper 를 사용하여 사용자의 연령대를 확인합니다. |
| -1 | userState 가 UNKNOWN, REQUIRED 입니다. | |
ageUpper | 2 to 18 | 감독 대상 사용자의 연령 범위의 상한 (포함)입니다. ageLower 및 ageUpper 를 사용하여 사용자의 연령대를 확인합니다. |
| -1 | 사용자가 만 18세 이상이거나 userState 가 UNKNOWN, REQUIRED 입니다. | |
mostRecentApprovalDate | Datestamp | 승인된 가장 최근의 중요한 변경사항의 날짜입니다. Ex) "2023-07-01T00:00:00.008Z" Apple App Store는 지원하지 않습니다. |
| 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 : 지원하지 않습니다. |
| Empty (a blank value) | userState 가 UNKNOWN, REQUIRED 입니다. Apple App Store는 지원하지 않습니다. |
Apple App Store 연령대 공유 팝업¶
Apple App Store 에서는 getAgeRange API를 호출했을 때, 연령대 공유를 요청하는 팝업을 노출합니다.
연령대 공유를 선택한 유저만 연령대 및 승인 여부 확인이 가능하며, 거부한 경우 REQUIRED 상태가 수신됩니다.
앱 내 중요한 변경사항 알림¶
일부 관할권 및 지역의 규정에 따라 게임 앱에 아래와 같은 변경 사항이 발생하는 경우, 게임 앱 측에서는 보호자(부모)에게 변경 사항을 알리고, 미성년자인 사용자가 해당 앱을 계속 사용하도록 승인을 요청해야 합니다.
- 수집·저장·공유되는 데이터 변경
- 연령 등급 변경
- 새로운 인앱 구매나 광고 기능 추가
- 사용자 경험 변경 등
게임 앱 측에서는 변경사항을 언제 알리고 승인을 요청하는지 결정할 수 있습니다. 각 마켓플레이스별 변경 사항 알림 방법은 아래와 같습니다.
- Google Play 및 Amazon Appstore: 각 마켓플레이스에서 운영하는 개발자 콘솔을 통한 알림
- Apple App Store: 게임 앱에서 직접 showAgeRangeUpdatePermission API를 호출하여 알림
showAgeRangeUpdatePermission API¶
Apple App Store 마켓으로 배포하는 앱인 경우 앱에서 직접 showAgeRangeUpdatePermission API를 호출하여 보호자(부모)에게 중요한 변경사항을 알리고 승인을 요청합니다.
Note
showAgeRangeUpdatePermission API에서 전달하는 description 파라미터 작성 시, 보호자가 앱에서 변경된 상항을 명확하게 이해할 수 있도록 간결하고 이해하기 쉬운 언어를 사용하세요. 보호자(부모)는 이 파라미터 설명을 보고 승인 여부를 결정합니다.
showAgeRangeUpdatePermission API 호출하는 예제 코드는 아래와 같습니다.
API Reference: Unity®
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
API Reference: Swift
API Reference: Objective-C
#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목록을 다운로드하면 철회 사실을 확인할 수 있습니다.- Goole Play의
installId는 3개월 동안 유효하며 이후 삭제됩니다.
- Goole Play의
- Apple App Store: 승인 취소에 관한 알림을 보냅니다.
- Amazon Appstore: 개발자 콘솔의 보고 섹션에서 Amazon
userId를 다운로드하면 철회 사실을 알 수 있습니다.
iOS 타겟 엔진별 Age Range 권한 설정¶
iOS 타겟으로 개발하는 각 엔진 환경에서 Age Range 권한을 설정하는 방법은 아래와 같습니다.
Native¶
Native 환경에서 Age Range API를 요청하려면 아래 순서대로 Declared Age Range 권한을 추가합니다.
- Xcode 프로젝트 창의 프로젝트 네비게이터에서 개발자 프로젝트를 선택하세요.
- TARGETS 목록에서 개발자 앱을 선택하세요.
- Signing & Capabilities 탭을 클릭하세요.
- Signing & Capabilities 탭 좌측 상단에 있는 + Capability 버튼을 클릭하세요.
- 목록에서 Declared Age Range 를 선택해 추가합니다.

- Signing & Capabilities 목록에 추가된 Declared Age Range 를 확인할 수 있습니다.
Unity¶
Unity 환경에서 Age Range API를 요청하려면 아래 순서대로 Declared Age Range 권한을 추가합니다. Unity 에디터로 간편하게 설정할 수 있습니다.
- Unity 상단 메뉴에서 Hive 를 선택합니다.
- Build project post process setting > iOS 를 선택합니다.

- Hive PostProcess Editor(iOS) 에서 Age Range 체크박스를 선택합니다.

- iOS project export 이후 Signing & Capabilities 목록에 추가된 Declared Age Range 을 확인할 수 있습니다.
Unreal Engine¶
Unreal Engine 환경에서는 아래와 같은 entitlements template 을 통해 Declared Age Range 권한을 추가합니다. 사용 중인 entitlements template 파일에 키값을 추가하세요.
template을 사용 중이지 않다면, <앱_프로젝트_경로>/Plugins/HIVESDK/Source/HiveSDKiOS/template/HIVESDKV4Tester.entitlements 파일을 참고하세요.


