플레이어의 나이 가져오기
나이 수집을 위한 관할권 요구사항
새로운 세션
을 생성하기 위해 첫 번째 단계는 현지 규정이 게임이 플레이어의 생년월일을 요청하도록 요구하는지 여부를 결정하는 것입니다. 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"));
// 관할권에 대한 추가 정보 추출
// 나이 게이트를 더욱 사용자 정의하는 데 사용할 수 있습니다
int32 DigitalConsentAge = JsonResponse->GetIntegerField(TEXT("digitalConsentAge"));
int32 CivilAge = JsonResponse->GetIntegerField(TEXT("civilAge"));
int32 MinimumAge = JsonResponse->GetIntegerField(TEXT("minimumAge"));
// 방법 배열 추출
const TArray<TSharedPtr<FJsonValue>>& ApprovedAgeCollectionMethods =
JsonResponse->GetArrayField(TEXT("approvedAgeCollectionMethods"));
TSet<FString> Methods;
for (const TSharedPtr<FJsonValue>& Value : ApprovedAgeCollectionMethods)
{
Methods.Add(Value->AsString());
}
if (bShouldDisplay)
{
ShowAgeGate(Methods, [this, DigitalConsentAge, Callback,
bAgeAssuranceRequired](const FString& DOB)
{
// 디지털 동의 나이보다 높은 나이만 확인
int32 Age = CalculateAgeFromDOB(DOB);
Callback(true, bAgeAssuranceRequired && Age >= DigitalConsentAge, DOB);
});
}
else
{
Callback(false /* ageGateShown */, false /* ageAssuranceRequired */, TEXT(""));
}
}
}
});
}
/age-gate/get-requirements
가 shouldDisplay
= false
로 응답한 경우, 나이 게이트를 표시하지 않아야 하며 플레이어의 생년월일은 정의되지 않습니다. 이 경우 게임은 여전히 /session/get-default-permissions
를 호출하여 관할권 에 대한 기본 권한을 검색하여 세션
을 생성합니다. 이는 이 관할권에서 권한이 나이에 따라 달라지지 않음을 의미합니다. 게임의 일부 기능은 관할권에 따라 모든 나이 청중에게 금지될 수 있으므로, 게임은 여전히 세션
권한을 참조하여 기능을 활성화할 수 있는지 확인해야 합니다.
나이 게이트 표시
나이 게이트가 필요한 경우(shouldDisplay
= true
), 나이 게이트 UI를 표시해야 하며 사용자는 계속하려면 생년월일을 입력해야 합니다.
특정 관할권은 나이 게이트에 슬라이더를 포함할 수 있는지 또는 명시적인 생년월일을 요청해야 하는지에 대해 구체적입니다. 나이 수집을 위해 허용되는 방법은 /approvedAgeCollectionMethods
필드에 지정됩니다.
나이 보증 처리
플레이어가 성인이나 청소년으로 간주될 나이를 입력하는 경우, 일부 관할권에서는 나이 보증을 요구할 수 있습니다. 이러한 관할권에서 /age-gate/get-requirements
API에서 반환되는 ageAssuranceRequired
필드는 true
가 됩니다. 이 경우 사용자가 생년월일을 입력한 후, 위치의 디지털 동의 나이보다 높은 경우 제공된 나이를 확인해야 합니다. 나이 추정은 얼굴 스캔이나 문서 확인을 사용하여 수행할 수 있습니다. 나이 추정이 실패하거나 플레이어가 제공한 나이가 추정된 나이 범위의 최저값보다 낮은 경우, 범위의 최소 나이로 간주해야 합니다. 플레이어는 부모 동의가 필요하거나, 게임에 대해 구성된 최소 나이에 따라 완전히 차단될 수 있습니다.