合规性
Compliance是Hive SDK提供的一项功能,使游戏应用程序能够响应为可持续业务和用户保护而必须遵循的法律法规、政策和要求。
本指南说明了Hive SDK Compliance支持的法律、伦理和行政监管事项以及如何应用它们。
应用商店责任法的用户年龄范围验证¶
从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响应。
| 响应字段 | 值 | 描述 |
|---|---|---|
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 | 最近批准的重大变更的日期。 例)"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 : Amazon账户的 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: 您可以通过从Age Signals页面下载
installID列表来确认撤销。- Google Play的
installId有效期为3个月,然后被删除。
- Google 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**来添加。

- 您可以看到**Declared Age Range**已添加到Signing & Capabilities列表中。
Unity¶
要在Unity环境中请求Age Range API,请按以下顺序添加Declared Age Range权限。您可以使用Unity编辑器轻松设置此项。
- 从Unity的顶部菜单中选择**Hive**。
- 选择**Build project post process setting > iOS**。

- 在Hive PostProcess Editor(iOS)中选择**Age Range**复选框。

- iOS项目导出后,您可以看到**Declared Age Range**已添加到Signing & Capabilities列表中。
Unreal Engine¶
在Unreal Engine环境中,通过以下*entitlements template*添加Declared Age Range权限。将键值添加到您正在使用的entitlements template文件中。
如果您没有使用template,请参考<应用程序_项目_路径>/Plugins/HIVESDK/Source/HiveSDKiOS/template/HIVESDKV4Tester.entitlements文件。


