본문으로 건너뛰기

실행

플레이나누 헬프데스크를 열어 사용자가 문의를 등록하고 확인할 수 있습니다.

URL 확인

이 기능은 help.playnanoo.com 도메인을 사용합니다.

기능 개요

헬프데스크는 두 가지 모드로 동작합니다:

  • 게스트 모드: 로그인하지 않은 사용자도 문의 가능
  • 플레이어 모드: 로그인한 사용자 정보와 함께 문의 등록

인증 방식

플레이어 모드는 authKey 파라미터를 통해 인증합니다.

AuthKey 생성

#include "Misc/Base64.h"

FString CreateAuthKey(const FString& GameId, const FString& UserId)
{
// AuthKey = Base64(GameId + UserId)
FString AuthKeySource = GameId + UserId;
return FBase64::Encode(AuthKeySource);
}

Unreal C++ 구현

플레이어 모드로 열기

로그인한 사용자 정보와 함께 헬프데스크를 엽니다.

void OpenHelpDeskPlayerMode()
{
// AuthKey 생성
FString AuthKey = CreateAuthKey(GameId, UUID);

// URL 생성
FString Url = FString::Printf(
TEXT("https://help.playnanoo.com/%s?userId=%s&authKey=%s"),
*GameId,
*FGenericPlatformHttp::UrlEncode(UUID),
*FGenericPlatformHttp::UrlEncode(AuthKey)
);

// 브라우저에서 열기
FPlatformProcess::LaunchURL(*Url, nullptr, nullptr);
}

URL 파라미터:

파라미터설명
userId사용자 고유 ID (UUID)
authKeyBase64 인코딩된 인증키

게스트 모드로 열기

로그인하지 않은 사용자를 위한 헬프데스크입니다. 인증이 필요 없습니다.

void OpenHelpDeskGuestMode()
{
FString Url = FString::Printf(
TEXT("https://help.playnanoo.com/%s?mode=guest"),
*GameId
);

FPlatformProcess::LaunchURL(*Url, nullptr, nullptr);
}

선택적 파라미터 (Optional)

게임별 커스텀 정보를 추가로 전달할 수 있습니다.

void OpenHelpDeskWithOptional()
{
// Optional 파라미터를 JSON으로 생성
TSharedPtr<FJsonObject> OptionalJson = MakeShareable(new FJsonObject());
OptionalJson->SetStringField(TEXT("GAME_SERVER"), TEXT("ASIA"));
OptionalJson->SetStringField(TEXT("PLAYER_LEVEL"), TEXT("50"));
OptionalJson->SetStringField(TEXT("CHARACTER_CLASS"), TEXT("Warrior"));

// JSON을 문자열로 변환
FString OptionalString;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OptionalString);
FJsonSerializer::Serialize(OptionalJson.ToSharedRef(), Writer);

// Base64 인코딩
FString OptionalBase64 = FBase64::Encode(OptionalString);

// AuthKey 생성
FString AuthKey = CreateAuthKey(GameId, UUID);

// URL 생성 (optional 파라미터 포함)
FString Url = FString::Printf(
TEXT("https://help.playnanoo.com/%s?userId=%s&authKey=%s&optional=%s"),
*GameId,
*FGenericPlatformHttp::UrlEncode(UUID),
*FGenericPlatformHttp::UrlEncode(AuthKey),
*FGenericPlatformHttp::UrlEncode(OptionalBase64)
);

FPlatformProcess::LaunchURL(*Url, nullptr, nullptr);
}

Optional 파라미터 예시

파라미터설명
GAME_SERVER게임 서버 (예: ASIA, NA, EU)
PLAYER_LEVEL플레이어 레벨
CHARACTER_CLASS캐릭터 직업/클래스
GUILD_NAME길드/클랜 이름
LAST_STAGE마지막 플레이 스테이지
ERROR_CODE에러 코드 (에러 발생 시)
선택적 파라미터 활용

선택적 파라미터를 통해 사용자 문의 시 게임 상태 정보를 함께 전달하면, 고객 지원팀이 문제를 더 빠르게 파악하고 해결할 수 있습니다.

사용 예제

로그인 여부에 따른 분기 처리

void OpenHelpDesk()
{
if (bIsLoggedIn)
{
OpenHelpDeskPlayerMode();
}
else
{
OpenHelpDeskGuestMode();
}
}

에러 발생 시 자동으로 열기

void OnApplicationError(const FString& ErrorMessage)
{
// Optional에 에러 정보 포함
TSharedPtr<FJsonObject> OptionalJson = MakeShareable(new FJsonObject());
OptionalJson->SetStringField(TEXT("ERROR_MESSAGE"), ErrorMessage);
OptionalJson->SetStringField(TEXT("ERROR_TIME"), FDateTime::Now().ToString());

// ... (이후 OpenHelpDeskWithOptional과 동일)
}
다국어 지원

헬프데스크는 브라우저 언어 설정을 자동으로 감지하여 해당 언어로 표시됩니다.

WebView 권장

더 나은 사용자 경험을 위해 FPlatformProcess::LaunchURL 대신 WebView 플러그인 사용을 권장합니다.