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");
}