이벤트 속성 전송¶
개요¶
게임 이벤트 로그는 필수 속성, 사용자 정의 속성으로 구성됩니다. Hive SDK v4를 연동하면 별도 전송 없이도 자동으로 수집되는 속성이 추가됩니다.
필수 속성¶
게임 이벤트 로그를 전송할 때 반드시 포함 해야 하는 속성입니다.
필수 속성 네이밍 규칙
필수 속성명은 카멜 케이스(camelCase) 또는 소문자(lowercase)로 전송해야 합니다. user_id와 같이 스네이크 케이스(snake_case)로 전송하면 정상 처리되지 않고 rescue 테이블로 격리됩니다.
| 속성명 | 설명 | 자료형 | 예시 |
|---|---|---|---|
userId | 계정 기준 유저 식별자 | STRING | 100001 |
deviceId | 단말 기준 유저 식별자 | STRING | 100000 |
identifierProvider | 유저 식별자 발급 시스템. hive 고정 | STRING | hive |
appId | Hive 콘솔 > 앱센터에 등록된 Project ID | STRING | com.com2us.game.ios |
appIdGroup | Hive 콘솔 > 앱센터에서 발급하는 Game ID. appId 전송 시 자동 생성 | STRING | com.com2us.game |
eventTime | 이벤트 발생 시각. RFC 3339 국제 표준 (타임존 포함) | STRING | 2026-07-20T14:01:01+09:00 |
eventName | 이벤트를 분류하는 이벤트명 | STRING | asset_drop |
appId / appIdGroup 전송 규칙
이벤트 전송 시 appId 또는 appIdGroup 중 하나를 반드시 포함해야 합니다.
appId를 아는 경우:appId만 전송하세요.appIdGroup은 자동 생성됩니다.appId를 모르는 경우:appIdGroup을 직접 전송하세요.- 두 값을 동시에 전송하면
appId기준으로appIdGroup이 재생성되므로,appId를 전송할때는appIdGroup을 포함하지 마세요.
필수 속성 전송 시 주의 사항
다음 조건 중 하나라도 해당하면 이벤트 로그가 rescue 테이블로 격리 됩니다.
appId또는appIdGroup둘 다 없는 경우- 나머지 필수 속성(
userId,identifierProvider,deviceId,eventTime,eventName) 중 하나라도 누락되거나 빈 값인 경우 - 값을 알 수 없는 경우에도 빈 값으로 두지 말고,
"0"또는"unknown"과 같은 임의의 값을 채워 전송하세요.
eventName 명명 규칙¶
eventName에 사용할 이벤트명은 아래 규칙을 따라 작성할 것을 권고합니다.
- 권장 문자: 영문(a–z, A–Z, 대/소문자 구분), 숫자(0–9), 언더바(
_) - 구분자: 단어 사이는 공백이 아닌 언더바(
_)로 구분 - 형태: 이벤트를 명확하게 설명하는
명사_동사형태 권장 - 예시:
item_purchase,level_up,tutorial_complete,stage_start
Warning
위 규칙을 준수하지 않은 이벤트명은 분석에 활용하는 데 제한이 있을 수 있습니다.
eventTime 형식 규칙 (RFC 3339)¶
eventTime은 RFC 3339 형식을 따르며, 반드시 타임존 정보를 포함해야 합니다.
형식:
허용 예시:
2026-07-20T14:01:01+09:00 (KST, 한국 표준시)
2026-07-20T05:01:01Z (UTC)
2026-07-20T14:01:01.123+09:00 (밀리초 포함)
2026-07-20T23:01:01-05:00 (미국 동부 시간)
허용되지 않는 예시:
2026-07-20 14:01:01 (타임존 없음 → 격리)
2026-07-20 (시간 없음 → 격리)
1719835261 (Unix timestamp → 격리)
14:01:01 (날짜 없음 → 격리)
eventTime¶
eventTime은 파이프라인에서 UTC로 변환 되어 테이블의dateTime컬럼에 저장됩니다. 원본 값은attributes.eventAttributes.eventTime에 그대로 보존됩니다.
eventTime 전송 시 주의 사항
eventTime은 현재 시각 기준 과거 31일 ~ 미래 31일 범위 내의 값만 허용됩니다. 이범위를 벗어나면 이벤트 로그가 rescue 테이블로 격리됩니다.
사용자 정의 속성¶
게임에서 전송하고 싶은 정보를 속성명과 속성값으로 구성하여 필수 속성과 함께 직접 전송합니다.
속성명 규칙¶
| 규칙 | 설명 | 예시 |
|---|---|---|
| 시작 문자 | 반드시 영문 소문자 또는 대문자 로 시작 | level, Stage |
| 대소문자 구분 | 사용자 정의 속성은 대소문자를 구분합니다 | market != Market != MARket |
| 허용 특수문자 | 특수 문자는 언더스코어(_)만 허용 | item_name |
사용할 수 없는 속성명 (예약어)¶
사용자 정의 속성 전송 시 주의 사항
아래 예약어를 속성명으로 사용하면 rescue 테이블로 격리 됩니다. 대소문자와 관계없이 동일하게 적용됩니다.
| 예약어 | 비고 |
|---|---|
attributes | 대소문자 무관 (예: Attributes, ATTRIBUTES) |
eventAttributes | 대소문자 무관 |
hiveAttributes | 대소문자 무관 |
속성값 규칙¶
속성값 형태 주의 사항
속성값은 숫자형 과 문자형 2가지만 전송 가능합니다. JSON 객체 , JSON 배열 , JSON 형태의 문자열 형태로 전송 시 rescue 테이블로 격리 됩니다.
| 자료형 | 설명 | 예시 |
|---|---|---|
| 숫자형 | 정수 또는 소수. 따옴표 없이 전송 | "level": 10, "exp": 1.5 |
| 문자형 | 반드시 큰따옴표("")로 감싸서 전송 | "character_name": "AA" |
속성값이 JSON 객체 , JSON 배열 , JSON 형태의 문자열 형태인 경우 rescue 테이블로 격리 됩니다.
// JSON 객체 (허용되지 않음)
"info": {"key": "value"}
// JSON 배열 (허용되지 않음)
"items": [1, 2, 3]
// JSON 형태의 문자열 (허용되지 않음)
"data": "{\"key\": \"value\"}"
동일 속성명 중복 전송¶
동일한 속성명을 2개 이상 전송하면 속성값은 랜덤하게 선택되어 1개만 저장 됩니다.
Hive SDK v4 자동 수집 속성¶
클라이언트에서 Hive SDK v4로 이벤트 로그를 전송할 때만 자동 수집됩니다.
- 사용자가 동일한 속성명으로 직접 값을 전송하면, SDK가 자동 수집한 값 대신 사용자가 전송한 값 이 저장됩니다.
- 아래 속성은 테이블의
attributes.eventAttributes에 저장됩니다.
Hive SDK v4 이벤트 로그 전송 기능을 사용하는 경우, SDK가 클라이언트 디바이스에서 직접 수집하여 전송하는 속성입니다.
필수 속성¶
필수 속성 중 SDK v4가 자동으로 수집하는 속성입니다. (eventName은 제외)
| 속성명 | 설명 | 예시 |
|---|---|---|
userId | 계정 기준 유저 식별자. Hive SDK 연동 시 AuthV4.getPlayerInfo()의 playerId 값 | 100001 |
deviceId | 단말 기준 유저 식별자. Hive SDK 연동 시 AuthV4.getPlayerInfo()의 did 값 | 100000 |
identifierProvider | 유저 식별자 발급 시스템. 현재 Hive SDK 연동만 지원하므로 hive 고정 | hive |
appId | Hive 콘솔 > 앱센터에 등록된 Project ID | com.com2us.game.ios |
appIdGroup | Hive 콘솔 > 앱센터에서 발급하는 Game ID. appId 전송 시 자동 생성 | com.com2us.game |
eventTime | 이벤트 발생 시각. RFC 3339 국제 표준 (타임존 포함) | 2026-07-20T14:01:01+09:00 |
사용자/계정 식별 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
vid | 프로젝트(게임)별로 발급되는 사용자 계정 고유 식별자 (userId와 동일). 로그인 완료 후 유효합니다. | Hive 플랫폼 (인증) | 136910540 |
uid | 하이브 멤버십 가입 시 발급되는 계정 고유 식별자로, vid의 상위 개념입니다. | Hive 플랫폼 (멤버십) | 223786026 |
did | 앱 설치 시 디바이스별로 발급되는 고유 식별자 (deviceId와 동일). 앱 재설치 시 신규 발급됩니다. | Hive 플랫폼 (프로비저닝) | 938743951 |
vid_type | vid의 발급 체계 및 계정 유형입니다. | Hive 플랫폼 (앱센터) | v4 |
analytics_id | 기기 추적을 위해 클라이언트에서 생성 및 영속화하는 UUID. 앱 삭제 전까지 유지되며, MMP 트래커와 동일한 값을 공유합니다. | Hive 플랫폼 (프로비저닝) | 1qIXG3uDT4WzhV1e46GIYQ== |
시간/식별 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
dateTime | 이벤트 로그 전송 시 생성되는 이벤트 발생 일시입니다. (yyyy-MM-dd HH | Hive SDK (코어) | 2026-01-01 00:00:00 |
guid | 이벤트 로그 전송 시마다 생성되는 UUID (하이픈 제거). 이벤트 로그의 고유 식별 및 중복 제거에 사용됩니다. | Hive SDK (코어) | ecbfbd7fcdc340e1b8a433999c5290c1 |
is_hive_time | 이벤트 로그의 타임스탬프가 Hive 서버 시간과 동기화되었는지 여부 플래그입니다. (Y/N) | Hive SDK (코어) | Y |
timezone | dateTime 값의 기준이 되는 타임존 오프셋 정보입니다. | Hive SDK (코어) | GMT+09:00 |
is_url_encode | 이벤트 로그 전송 시 URL 인코딩 적용 여부를 나타내는 플래그입니다. (Y 고정) | Hive SDK (코어) | Y |
디바이스 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
model | 기기의 하드웨어 모델 식별자입니다. | 디바이스 | iPhone17,3 |
os | 기기의 운영체제 구분 코드입니다. (iOS: I, Android: A) | 디바이스 | I |
os_version | 기기의 운영체제 버전입니다. | 디바이스 | 26.5.2 |
cpu | 기기의 CPU 아키텍처입니다. | 디바이스 | arm64 |
language | 기기에 설정된 사용자 선호 언어 및 로케일 코드입니다. | 디바이스 | ko-KR |
device_country | 기기 지역 설정에 기반한 국가 코드입니다. | 디바이스 | KR |
hive_country | 접속 IP를 기반으로 Hive 서버가 판정한 국가 코드. VPN 사용 시 기기 설정과 다를 수 있으며, 판정 불가 시 UNKNOWN으로 기록됩니다. | Hive 플랫폼 (코어) | KR |
SDK/앱 빌드 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
app_version | 앱의 내부 빌드 버전입니다. | Hive SDK (빌드) | 1.0.32 |
app_version_display | 스토어에 노출되는 앱 릴리즈 버전입니다. | Hive SDK (빌드) | 1.0.32 |
sdk_version | 현재 프로젝트에 적용된 Hive SDK 버전입니다. | Hive SDK (빌드) | 4.26.4.0 |
interface_version | 현재 적용된 SDK의 인터페이스 버전입니다. | Hive SDK (빌드) | 4.26.4.0 |
build_time | 적용된 Hive SDK의 빌드 타임스탬프입니다. | Hive SDK (빌드) | 202605281104 |
SDK 설정 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
server_id | 클라이언트에서 API로 설정한 게임 서버 식별자입니다. | Hive SDK (설정) | kr |
game_language | API로 설정된 게임 내 표준 언어 코드입니다. 미설정 시 기기 언어로 대체됩니다. | Hive SDK (설정) | ko |
channel | 설정 파일 기준의 플랫폼 채널 구분자입니다. | Hive SDK (설정) | HIVE |
market | 앱이 출시된 마켓 코드입니다. (Apple: AP, Google: GO) | Hive SDK (설정) | AP |
company | 앱을 서비스하는 퍼블리셔 또는 회사 구분 문자열입니다. | Hive 플랫폼 (앱센터) | hive |
companyIndex | 앱을 서비스하는 퍼블리셔 또는 회사 구분 인덱스입니다. | Hive 플랫폼 (앱센터) | 3 |
age_gate_u13 | 13세 미만(COPPA) 연령 게이트 대상 여부입니다. SDK 초기화 전에는 null일 수 있습니다. | Hive SDK (설정) | false |
수신 서버 정보¶
| 속성명 | 설명 | 도메인 | 예시 |
|---|---|---|---|
clientIp | 이벤트 로그를 전송한 클라이언트의 실제 접속 IP. 수신 서버에서 추출하며, 저장 시 마지막 옥텟이 마스킹 처리됩니다. | 수신 서버 (WAS) | 123.123.123.0 |
주의사항 & Tips¶
- 필수 속성명은 카멜 케이스 또는 소문자로 전송해야 하며, 스네이크 케이스(
user_id)로 보내면 rescue 테이블로 격리됩니다. appId또는appIdGroup중 하나는 반드시 포함해야 하며, 둘 다 없으면 격리됩니다.eventTime은 RFC 3339 형식(타임존 포함)만 허용되며, 현재 시각 기준 과거·미래 31일을 벗어나면 격리됩니다.- 사용자 정의 속성명으로
attributes,eventAttributes,hiveAttributes는 사용할 수 없습니다(대소문자 무관). - 속성값은 숫자형·문자형만 허용되며, JSON 객체·배열·JSON 형태의 문자열은 격리됩니다.
- 격리된 로그를 확인하고 재전송하는 방법은 데이터 격리를 참고하세요.