执行
打开PlayNANOO客服中心,用户可以注册和确认咨询。
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 建议
为了更好的用户体验,建议使用WebView插件而不是FPlatformProcess::LaunchURL。