跳到主要内容

Unreal Engine SDK API Reference

PC

初始化

受政策影响,心动首次初始化时(或者协议更新时),将会弹起协议弹窗,只有用户同意协议后,才能初始化成功,否则将会强制退出游戏。

FXDGCommon::InitSDK(FXDGCommon::FInitDelegate::CreateLambda([](bool IsSuccess, const FString& Msg) {
if (IsSuccess)
{

}
else
{

}
}));

配置文件的默认路径是/Plugins/XDGCommon/Config/XDConfig.json

登录接口

登录接口的类型:

UENUM(BlueprintType)
enum class EXDGLoginType : uint8 {
Default = UINT8_MAX,// 自动登录
Guest = 0,// 游客登录
WeChat = 1,
Apple = 2,
Google = 3,
Facebook = 4,
TapTap = 5,
LINE = 6,
Twitter = 7,
QQ = 8,
Steam = 10,
Phone = 11
};

登录接口调用:

FXDGUser::FDelegate UserDelegate = FXDGUser::FDelegate::CreateLambda([](const FXDGUser& User) {

});
FXDGError::FDelegate ErrorDelegate = FXDGError::FDelegate::CreateLambda([](const FXDGError& Error) {

});
FXDGAccount::LoginByType(Type, UserDelegate, ErrorDelegate);

需要注意的是,对于已登录的用户,每次进游戏需要使用Default方式来更新用户,如果返回的是失败,那么说明心动的登录状态已经失效,需要用户重新登录,游戏方应该退出到登录界面。

登录的某些错误码,会需要游戏方展示弹窗用来引导用户,具体可以咨询相关开发者。

获取用户信息及Token

TSharedPtr<FXDGUser> User = GetUser();
TSharedPtr<FXUSyncTokenModel> Token = FXUSyncTokenModel::GetLocalModel();

如果是未登录状态,那么指针为空,可以用来判断用户是否已经登录。 使用前判断下指针是否为空,如果登录状态过期,那么也会得到空指针,请及时重新登录。

获取用户地域

可以调用下方API获取用户所在地域:

FXDGCommon::GetRegionInfo(FXDGRegionInfo::FDelegate::CreateLambda([](const FXDGRegionInfo& RegionInfo) {

}), FXDGError::FDelegate::CreateLambda([](const FXDGError& Error) {

}));

退出登录

游戏用户在退出账户的时候,应该调用

FXDGAccount::Logout();

注销账户

注销账户时,可以调用

FXDGAccount::AccountCancellation();

如果用户注销成功,那么会发出用户被登出的回调:

FXDGAccount::OnUserStatusChange.AddLambda([](EXDGUserChangeState UserState, const FString& Msg){

});

此时,游戏应该做登出的操作。

多语言

XDSDK支持14种语言,TapSDK仅支持7种,如果XDSDK设置的语言种类超出了TapSDK的支持,那么在TapSDK中显示的是英语(目前TapSDK仅涉及登录模块)

FXDGCommon::SetLanguage(EXDGLangType LangType);

打开用户中心

FXDGAccount::OpenUserCenter();

检查补款

FXDGRefundInfo::FDelegate CallBack = FXDGRefundInfo::FDelegate::CreateLambda([](const FXDGRefundInfo& RefundInfo) {

});
FXDGError::FDelegate ErrorDelegate = FXDGError::FDelegate::CreateLambda([](const FXDGError& Error) {

});
FXDGPayment::CheckRefundStatus(CallBack, ErrorDelegate);

打开客服中心

FXDGCommon::Report("serverId", "roleId", "roleName");

打开网页支付

FXDGPayment::FPayResultCodeDelegate Delegate = FXDGPayment::FPayResultCodeDelegate::CreateLambda([](EXDGPayResultCode ResultCode, const FString& Message) {
FString Result = "Unknow Code";
if (ResultCode == EXDGPayResultCode::OK) {
Result = TEXT("支付完成");
} else if (ResultCode == EXDGPayResultCode::Error) {
Result = TEXT("支付错误");
} else if (ResultCode == EXDGPayResultCode::NetworkError) {
Result = TEXT("网络错误");
} else if (ResultCode == EXDGPayResultCode::UserCancel) {
Result = TEXT("支付取消");
} else if (ResultCode == EXDGPayResultCode::PurchaseProcessing) {
Result = TEXT("支付处理中");
}
});
FXDGPayment::PayWithWeb(ServerIDStr, RoleIDStr, ProductIDStr, OrderIDStr, ProductNameStr, PayAmount, ExtrasStr, Delegate);

是否允许推送服务

韩国同意协议的时候有个是否统一推送的勾选项,韩国用户登录完后,可以用这个接口获取是否能推送。

if (FXDGCommon::IsCurrentUserPushServiceEnable()) {
TUDebuger::DisplayShow("Push Service Enable");
} else {
TUDebuger::DisplayShow("Push Service Disable");
}