获取玩家年龄
收集年龄的司法要求
创建新Session
的第一步是确定当地法规是否要求游戏询问玩家的出生日期。age-gate/get-requirements
返回shouldDisplay
字段中是否需要年龄门,以及其他信息,如当前司法管辖区可以显示的年龄门类型、游戏的最低年龄、当前位置的法定年龄和当前位置的数字同意年龄。
void UKidWorkflow::GetUserAge(const FString& Location, TFunction<void(bool, bool,
const FString&)> Callback)
{
// 使用/age-gate/get-requirements来确定要做什么
// - 是否显示年龄门
// - 允许的年龄门类型
// - 获取digitalConsentAge、civilAge和minimumAge
// - 是否需要年龄验证
// - 如果需要,显示年龄门
// - 调用Callback()并传入年龄、是否显示年龄门以及是否需要年龄验证
FString Url = BaseUrl + TEXT("/age-gate/get-requirements?jurisdiction=") + Location;
HttpRequestHelper::GetRequestWithAuth(Url, AuthToken,
[this, Location, Callback](FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful && Response.IsValid())
{
TSharedPtr<FJsonObject> JsonResponse;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, JsonResponse))
{
bool bShouldDisplay = JsonResponse->GetBoolField(TEXT("shouldDisplay"));
bool bAgeAssuranceRequired = JsonResponse->GetBoolField(TEXT("ageAssuranceRequired"));
// 提取有关司法管辖区的额外信息。
// 例如:digitalConsentAge、civilAge、minimumAge和approvedAgeCollectionMethods
FString DigitalConsentAge = JsonResponse->GetStringField(TEXT("digitalConsentAge"));
FString CivilAge = JsonResponse->GetStringField(TEXT("civilAge"));
FString MinimumAge = JsonResponse->GetStringField(TEXT("minimumAge"));
TArray<TSharedPtr<FJsonValue>> ApprovedMethods = JsonResponse->GetArrayField(TEXT("approvedAgeCollectionMethods"));
Callback(bShouldDisplay, bAgeAssuranceRequired, DigitalConsentAge);
}
else
{
Callback(false /* ageGateShown */, false /* ageAssuranceRequired */, TEXT(""));
}
}
});
}
如果/age-gate/get-requirements
响应中shouldDisplay
= false
,则不应显示年龄门,并且未定义玩家的出生日期。在这种情况下,游戏仍将通过调用/session/get-default-permissions
来为该司法管辖区检索默认权限,从而创建一个Session
,这意味着在该司法管辖区内权限不会因年龄而异。基于司法管辖区的要求,游戏中的某些功能可能对所有年龄段的观众都是禁止的,因此游戏仍应咨询Session
权限以检查是否可以启用某个功能。
显示年龄门
如果需要年龄门(shouldDisplay
= true
),则应显示年龄门UI,用户必须输入出生日期才能继续。
某些司法管辖区对年龄门是否可以包含滑块或必须请求明确的出生日期有特定要求。允许的年龄收集方法在/approvedAgeCollectionMethods
字段中指定。
处理年龄验证
如果玩家输入的年龄被认为是成人或青少年,某些司法管辖区可能需要年龄验证。在这些司法管辖区中,/age-gate/get-requirements
API返回的ageAssuranceRequired
字段将为true
。在这种情况下,在用户输入出生日期后,如果其年龄超过该位置的数字同意年龄,游戏应验证给定的年龄。年龄估算可以通过面部扫描或文档验证进行。如果年龄估算失败,或玩家提供的年龄低于估算年龄范围的最低值,则应将其视为该范围的最低年龄。玩家将需要父母同意,或根据游戏配置的最低年龄被完全阻止。