平台年龄信号
游戏平台(Apple iOS、Google Play、Xbox、Meta Horizon 以及 k-ID 本身)可以提供关于玩家的年龄数据。这些数据可以连同自报年龄一起传递给 k-ID,或者取代自报年龄。k-ID 使用这些数据在适当时抑制年龄门控、解决年龄冲突,并且当信号被认为已验证时,无需额外验证步骤即可满足年龄验证要求。
平台年龄信号与高风险功能的年龄保证协同工作。例如,已验证的 Apple iOS 信号既可以跳过年龄门控,又可以在巴西解锁战利品箱权限,无需单独的验证步骤。
从这里开始
在以下情况下使用此功能集:
- 重用平台已知的玩家年龄信息
- 为已验证成人信号跳过年龄门控
- 解锁高风险权限(如巴西战利品箱和定向广告),无需再次要求玩家验证
- 检测平台年龄信号与自报年龄冲突的情况
快速集成路径
| 如果您的游戏有… | 发送给 k-ID | 通常发生的事 |
|---|---|---|
| 来自 Apple iOS、Google Play 或 k-ID 的已验证成人信号 | 在 GET /age-gate/get-requirements 和 POST /age-gate/check 中都传入平台信号 | 可以跳过年龄门控,已验证年龄权限可立即启用 |
| 未验证信号,如 Xbox 或 Meta Horizon | 在 get-requirements 和 check 中传入平台信号 | k-ID 仍可将其用于保守年龄解析,但不能满足已验证年龄权限 |
| 基于类别的平台信号 | 直接传入类别,或先用 POST /age-gate/get-platform-age-range 转换 | k-ID 将类别解析为特定司法管辖区的年龄范围 |
| 完全没有平台信号 | 您的常规年龄门控输入 | 适用标准年龄门控流程,高风险权限可能之后需要年龄保证 |
API 映射
以下是开发者在集成过程中最常用的端点:
| 端点 | 何时调用 | 重要性 |
|---|---|---|
GET /age-gate/get-requirements | 显示年龄门控之前 | 告知您是否显示门控以及是否有已验证年龄权限仍需保证 |
GET /session/get | check 或挑战完成后 | 刷新权限并检查 ageVerification |
POST /age-gate/check | 始终在获取玩家年龄输入后调用 | 创建或更新会话,并在已验证平台信号允许时在会话上记录已验证年龄 |
POST /session/upgrade | 玩家尝试使用高风险功能时 | 立即启用所请求的权限,或创建年龄保证挑战 |
POST /age-gate/get-platform-age-range | 仅用于基于类别的平台信号 | 将平台类别转换为 ageLow 和 ageHigh |
端到端流程
推荐请求顺序
- 在启动时获取平台信号。 如果平台公开了年龄数据,请尽早获取,以便在
get-requirements和check中都能使用。 - 调用
GET /age-gate/get-requirements。 这告知您是否显示年龄门控以及是否有权限仍需已验证年龄。 - 始终调用
POST /age-gate/check。 即使跳过门控,您仍需调用check来创建或更新会话。 - 存储
sessionId和当前权限。 这是游戏应用于控制功能访问的依据。 - 仅在需要时调用
POST /session/upgrade。 当玩家主动尝试使用尚未启用的高风险功能时执行此操作。
如果 shouldDisplay 为 false 但您实际上没有可发送的平台信号,请以 age: 1 调用 POST /age-gate/check 作为保守后备。
POST /age-gate/check 如何使用平台信号
关键概念
PlatformAgeSignal 对象
描述平台报告年龄信号的统一对象。提供 category 或同时提供 ageLow 和 ageHigh,不要两者都提供。
{
"name": "apple-ios",
"ageLow": 18,
"ageHigh": 25,
"declarationType": "governmentIDChecked",
"verificationId": null
}
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | string | 是 | 平台标识符:apple-ios、google-play、xbox、meta-horizon 或 k-id |
category | string | 否 | 平台特定年龄类别(例如 digital-youth、TN、teen) |
ageLow | integer | 否 | 平台提供的最低年龄(岁)。应与 ageHigh 配对使用。 |
ageHigh | integer | 否 | 平台提供的最高年龄(岁)。应与 ageLow 配对使用。 |
declarationType | string | 否 | 平台确定年龄的方式(例如 governmentIDChecked、VERIFIED) |
verificationId | string (UUID) | 否 | 仅用于 k-id 信号:引用已完成的 k-ID 验证记录 |
支持的平台
| 平台 | 接受的输入 | 已验证声明类型 | 备注 |
|---|---|---|---|
apple-ios | 仅 ageLow + ageHigh | paymentChecked、governmentIDChecked、guardianPaymentChecked、guardianGovernmentIDChecked | 类别输入返回 400 |
google-play | 仅 ageLow + ageHigh | VERIFIED、SUPERVISED | 类别输入返回 400 |
| Xbox | category(child、teen、adult) | 无(不验证年龄要求) | 范围取决于司法管辖区 |
| meta-horizon | category(CH、TN、AD) | 无(不验证年龄要求) | 范围取决于司法管辖区(参见 Meta Horizon) |
| k-ID | category(digital-minor、digital-youth、adult) | KIDVerified(服务器解析) | 已验证声明需要来自 Compliance Studio 中同一组织的有效 verificationId |
已验证和未验证信号
平台信号被认为已验证仅当 declarationType 在该平台的已验证集合中时。已验证信号可以:
- 抑制年龄门控(
shouldDisplay = false),当信号表明是成人(ageLow >= civilAge)时 - 满足权限的年龄验证阈值(例如,无需单独验证步骤即可启用战利品箱)
- 在会话上记录
ageVerification,用于未来的权限检查
未验证信号(例如 Xbox、Meta Horizon,或自声明的 Apple 或 Google 信号)对于年龄冲突检测和保守年龄解析仍然有用,但无法绕过验证要求。
已验证年龄阈值
某些权限在启用前需要经过验证的年龄。在这些情况下,权限包含 verifiedAgeThreshold 整数字段。
例如,在巴西,loot-boxes-paid-cosmetic-only、loot-boxes-paid-gameplay-impacting、targeted-ads 和 profiling 需要已验证年龄 18,direct-marketing 需要已验证年龄 12。如果玩家的有效年龄低于阈值,权限变为 PROHIBITED。如果玩家满足阈值但尚未验证年龄,权限保持 enabled: false,直到:
- 已验证平台信号满足阈值,或
- 玩家完成高风险功能的年龄保证
年龄冲突检测
当主要年龄参数(dateOfBirth、age 或 kuid)和 platformAgeSignal 都提供给 /age-gate/check 时,系统比较它们的年龄类别:
- 平台比自报年龄小(例如,平台显示"儿童"但玩家说"成人"):返回
AGE_CONFLICT(400 错误) - 平台比自报年龄大: 允许;使用更保守(更低)的年龄
- 相同类别: 无冲突;正常进行
年龄冲突检测是每个开发者的功能标志。联系 k-ID 以启用。
后续步骤
- 有关精确请求形式、平台特定说明和验证规则,请参阅平台信号详情。
- 有关已验证年龄权限和会话升级行为,请参阅高风险功能的年龄保证。