跳转到主要内容

查询服务器时间

查询服务器的当前时间。

URL确认

API api.playnanoo.com 域名 使用。

API信息

  • URL: https://api.playnanoo.com/server_time/call
  • Method: POST
  • 需要认证: 是

请求参数

参数类型必填说明
udidstring必填设备 ID

响应数据

字段类型说明
codenumber响应 代码
messagestring响应 消息
valueobject服务器时间 信息

value 对象

字段类型说明
timezonestring时区
timestampnumberUnix时间戳
ISO_8601_datestringISO 8601格式日期
datestring日期 (YYYY-MM-DD)
yearstring
monthstring
daystring
hourstring
minutestring
secondstring

代码示例

void UMyGame::GetServerTime()
{
// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("udid"), DeviceId);

// JSON 문자열 변환
FString JsonBody = FPlayNANOOHelper::ToJsonString(Body);

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://api.playnanoo.com/server_time/call"));
Request->SetVerb(TEXT("POST"));
FPlayNANOOHelper::SetCommonHeaders(Request, true); // 인증 토큰 포함
Request->SetContentAsString(JsonBody);

Request->OnProcessRequestComplete().BindLambda(
[](FHttpRequestPtr Req, FHttpResponsePtr Res, bool bSuccess)
{
if (bSuccess && Res.IsValid())
{
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Res->GetContentAsString());

if (FJsonSerializer::Deserialize(Reader, JsonObject))
{
const TSharedPtr<FJsonObject>* ValueObject;
if (JsonObject->TryGetObjectField(TEXT("value"), ValueObject))
{
FString Date = (*ValueObject)->GetStringField(TEXT("date"));
FString Hour = (*ValueObject)->GetStringField(TEXT("hour"));
FString Minute = (*ValueObject)->GetStringField(TEXT("minute"));
FString Second = (*ValueObject)->GetStringField(TEXT("second"));
UE_LOG(LogTemp, Log, TEXT("서버 시간: %s %s:%s:%s"), *Date, *Hour, *Minute, *Second);
}
}
}
});

Request->ProcessRequest();
}
服务器时间 使用

服务器时间可用于确认游戏内事件开始/结束时间、时间戳验证等。为防止客户端时间操控,重要的时间检查应始终以服务器时间为准。

每分钟请求限制

每个设备和应用可能有每分钟请求次数限制。请避免过度调用,仅在需要时查询服务器时间。