실행
플레이나누 헬프데스크를 열어 사용자가 문의를 등록하고 확인할 수 있습니다.
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) |
| authKey | Base64 인코딩된 인증키 |
게스트 모드로 열기
로그인하지 않은 사용자를 위한 헬프데스크입니다. 인증이 필요 없습니다.
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 플러그인 사용을 권장합니다.