事件设计与发送指南¶
什么是事件分类体系?¶
事件分类体系(Event Taxonomy)是将收集的事件和属性以一致的结构和命名规则系统化组织起来的分类体系。
如果不加规则地收集游戏中发生的大量行为数据(登录、购买、升级等),团队之间可能会用不同的名称发送同一数据,或者在分析时难以理解某条数据具体意味着什么。事件分类体系可以避免这种混乱,并帮助收集到的数据直接用于分析。
为什么需要它?¶
| 问题场景 | 应用分类体系后 |
|---|---|
| 同一个事件由不同团队用不同名称发送 | 可以用统一名称整合数据 |
| 不清楚某个属性属于哪个事件 | 属性结构清晰,能快速掌握分析范围 |
| 新增事件时没有标准而随意定义 | 可按既有规则一致扩展 |
| 事后才发现数据质量问题 | 可按 schema 事先验证 |
结构¶
Analytics 的事件分类体系由 事件 和 属性 两层构成。
什么是事件?¶
事件是记录用户在游戏内执行的特定行为的数据单位。它包含“什么时候、谁、做了什么”,是分析的最基本单位。
- 例:用户购买了道具 → 发生
item_purchase事件 - 例:用户通关了某一关卡 → 发生
stage_clear事件 - 例:用户登录了应用 → 发生
login事件
什么是属性?¶
属性是在事件发生时一并记录的详细信息。仅靠事件只能知道“发生了什么”,而通过属性可以进一步了解“在什么条件下、以什么数值发生”。
- 例:
item_purchase事件的属性 → 道具 ID、支付金额、货币单位 - 例:
stage_clear事件的属性 → 关卡编号、通关时间、使用角色
按收集主体不同,属性分为两类。
- 平台属性:无需额外设置,仅通过 SDK 集成即可由 Hive 默认收集的属性。包括国家、OS、应用版本、服务器 ID 等。
- 事件属性:与事件一起直接发送的属性。可自行定义分析所需的项目并发送。
自定义事件发送¶
游戏中自行定义的事件(自定义事件)可按照以下收集 schema 发送,从而在 Analytics 中用于分析。
实际数据发送使用 Hive SDK 客户端日志发送 方法。所需源代码可在 事件 的 [源生成] 选项卡 中按语言自动生成。
在发送事件前,可先在 事件 中预先定义事件名和属性,便于团队共享与管理。不过,即使不预先定义就发送数据,Analytics 也会自动识别接收到的数据,并在最多 1 小时内反映到事件列表中。
Note
自动识别的事件会在事件列表中将创建者显示为 system,并可在事件页面中进一步输入说明·属性信息进行管理。
Analytics 收集 schema¶
这是发送自定义事件时使用的基础 schema。所有事件都必须按以下格式发送。
| 字段 | 是否必填 | 说明 |
|---|---|---|
| identifierProvider | 必填 | 指定用户标识符发放系统。若集成 Hive SDK,则输入 hive。 |
| userId | 必填 | 账号维度的用户标识符。若没有值,允许为 null。 |
| deviceId | 必填 | 设备维度的用户标识符。若没有值,允许为 null。 |
| appId | 必填 | 输入在 Hive 控制台 > App Center 中注册的应用 ID。 |
| dateTime | 必填 | 事件发生的时间。 |
| timezone | 必填 | 事件发生时的时区。 |
| category | 必填 | 决定数据将收集到哪张表的分类值。自定义事件必须固定发送为 raw_event_log。如果输入其他值,对应事件数据不会被正确收集到目标表中。 |
| eventName | 必填 | 对事件进行分类的事件名。 |
| eventAttribute | 必填 | 与事件一起发送的属性集合。项目必须定义;若无值,允许为 null。 |
| hiveAttribute | 必填 | 由 Hive provisioning 服务器提供的平台属性集合。目前需要开发者手动设置值后发送。项目必须定义;若无值,允许为 null。 |
Warning
请尽量避免让 userId 和 deviceId 都为 null。如果这两个值都没有,将无法识别用户,可能会导致基于队列的用户分析变得困难。
事件名命名规则¶
建议按以下规则编写 eventName 中使用的事件名。
- 推荐字符:英文字母(a–z, A–Z,区分大小写)、数字(0–9)、下划线(
_)、连字符(-) - 分隔符:单词之间不要使用空格,而使用下划线(
_)分隔 - 形式:建议采用能清楚说明事件的
名词_动词形式 - 示例:
item_purchase,level_up,tutorial_complete,stage_start
Warning
不遵守上述规则的事件名,在用于分析时可能会受到限制。
hiveAttribute / eventAttribute 结构示例¶
hiveAttribute 和 eventAttribute 分别以 JSON 对象形式发送。
hiveAttribute — 由 Hive provisioning 服务器提供的平台属性。包括市场、服务器 ID 等,目前需要开发者手动设置值后发送。后续将改为自动收集方式。
eventAttribute — 与事件一起直接发送的属性。包含分析该事件所需的详细信息。
Note
无论发送形式如何,属性值在 Analytics 中默认都被识别为字符串类型。若需要按数字或日期类型汇总的属性,请在 事件页面 的 [属性] 选项卡中修改该属性的数据类型。
属性命名规则¶
建议按以下规则编写 eventAttribute 和 hiveAttribute 的键名。
- 推荐字符:英文字母(a–z, A–Z,区分大小写)、数字(0–9)、下划线(
_)、连字符(-) - 分隔符:单词之间不要使用空格,而使用下划线(
_)分隔 - 示例:
item_id,contents-type,stage_level
Warning
不遵守上述规则的属性键,在用于分析时可能会受到限制。
属性键转换规则¶
发送属性后,系统会按照以下规则自动转换部分键名。请注意,分析时实际查询到的键名可能会不同。
-Hive 后缀(hiveAttribute)¶
hiveAttribute 的 所有 键末尾都会自动添加 -Hive。
| 传输键 | Analytics 中显示的键 |
|---|---|
country | country-Hive |
market | market-Hive |
-Event 后缀(eventAttribute)¶
仅当 eventAttribute 中的键与下面 8 个共通字段中的任意名称重名时,才会自动添加 -Event。
- timezone, dateTime, identifierProvider, userId, deviceId, appId, category, eventName
| 传输键 | 共通字段是否冲突 | Analytics 暴露的键 |
|---|---|---|
category | O | category-Event |
level | X | level(无转换) |
Warning
hiveAttribute 和 eventAttribute 都会以转换后的键名作为数据存储依据。分析时需要按转换后的名称(-Hive、-Event)查询属性。
推荐事件¶
以下是 Analytics 中分析价值较高的事件示例。按 eventName 和 eventAttribute 发送这些事件后,就可以直接用图表·漏斗·留存等 Analytics 的全部功能进行分析。
升级¶
| eventName | 说明 |
|---|---|
account_level_up | 账号升级 |
character_level_up | 角色升级 |
guild_level_up | 公会升级 |
skill_level_up | 技能升级 |
eventAttribute(共通):
| 属性 | 说明 | 示例 |
|---|---|---|
levelPrev | 升级前等级 | 10 |
level | 升级后等级 | 11 |
货币¶
| eventName | 说明 |
|---|---|
asset_earn | 获得货币 |
asset_spend | 消耗货币 |
eventAttribute(共通):
| 属性 | 说明 | 示例 |
|---|---|---|
assetName | 货币名称 | diamond, gold |
actionName | 变动原因 | inapp_purchase, quest_reward |
amountPrev | 变动前货币数量 | 500 |
amountVar | 变动量 | 100 |
amountCurr | 变动后货币数量 | 600 |
isPaid | 是否为付费货币 | Y, N |
内容¶
| eventName | 说明 |
|---|---|
contents_start | 接受·开始内容 |
contents_success | 内容完成 |
contents_fail | 内容失败 |
contents_cancel | 内容取消 |
eventAttribute(共通):
| 属性 | 说明 | 示例 |
|---|---|---|
modeTypeName | 内容类型 | raid, quest |
userLevel | 用户等级 | 50 |
playTimeSec | 游玩时间(秒) | 120 |
Tip
如果以 contents_start → contents_success / contents_fail / contents_cancel 的流程构建漏斗,就可以分析各内容的完成率和流失区间。
应用内商店¶
| eventName | 说明 |
|---|---|
store_view | 查看商店商品详情 |
store_purchase_click | 点击购买商店商品 |
eventAttribute(共通):
| 属性 | 说明 | 示例 |
|---|---|---|
productLocation | 商品展示位置 | package, main_shop |
productType | 商品类型 | pay, free, advertisement |
Tip
可以通过 store_view → store_purchase_click 漏斗分析各商品的点击转化率。
伙伴¶
| eventName | 说明 |
|---|---|
mate_earn | 获得伙伴 |
mate_spend | 消耗·出售·删除伙伴 |
eventAttribute(共通):
| 属性 | 说明 | 示例 |
|---|---|---|
mateId | 伙伴 ID | pet_001 |
mateGrade | 伙伴等级 | rare, epic |
mateChangeFlag | 变动路径 | gacha, purchase, upgrade, sell |
mateChangeAmount | 变动量 | 1 |
社交活动¶
| eventName | 说明 |
|---|---|
party_action | 队伍活动(邀请·加入·退出) |
friend_action | 好友活动(添加·删除) |
guild_action | 公会活动(加入·退出·踢出) |