开发指南
引入方式
- Unity
- UE
"com.xd.sdk.report": "6.23.4"
在 *.Build.cs 文件中添加举报模块依赖
PrivateDependencyModuleNames.Add("XDGReport");
举报
- Unity
- UE
var reporter = new ReportParams.ReporterInfo(new Dictionary<string, object>
{
// 举报者附加信息,e.g.:
{ "roleId", "gameRoleId" },
{ "userLevel", 100 }
var reportee = new ReportParams.ReporteeInfo(xdid, new Dictionary<string, object>
{
// 被举报者附加信息,e.g.:
{ "roleId", "gameRoleId" },
{ "userLevel", 100 }
});
var reasons = new List<ReportParams.ReasonInfo>
{
new ReportParams.ReasonInfo(1, "言语辱骂", new Dictionary<string, object>
{
// 举报原因附加信息,e.g.:
{"roleId", "gameRoleId"},
{"userLevel", 100}
}),
new ReportParams.ReasonInfo(2, "使用外挂", new Dictionary<string, object>
{
// 举报原因附加信息,e.g.:
{"roleId", "gameRoleId"},
{"userLevel", 100}
})
};
var evidenceList = new List<string>
{
"{PC 文件绝对路径}",
"{Android 文件绝对路径}",
"{iOS 文件绝对路径"
};
var reportParams = new ReportParams.Builder()
.SetReporter(reporter)
.SetReportee(reportee)
.SetReasons(testReasons)
.SetUserDescription("这个人不仅使用外挂打游戏,还言语辱骂队友!!!我要举报 TA!")
.SetEvidenceList(evidenceList)
.SetExtras(new Dictionary<string, object>
{
// 举报附加信息,e.g.:
{"roleId", "gameRoleId"},
{"userLevel", 100}
})
.Build();
XD.SDK.Report.XDGReport.Report(reportParams, result => {
if (result.Success)
{
Console.WriteLine("Report successfully");
}
else
{
Console.WriteLine($"Report failed: {result.XdException?.error_msg}");
}
});
FReportParam Param;
Param.Reporter.Extras = MakeShared<FJsonObject>(); // 举报者的额外数据
Param.Reporter.Extras->SetStringField(TEXT("RoleID"), TEXT("举报者的RoleID"));
Param.Target.XDID = TEXT("被举报者的XDID"); // 被举报者的XDID
Param.Target.Extras = MakeShared<FJsonObject>(); // 被举报者的额外数据
Param.Target.Extras->SetStringField(TEXT("RoleID"), TEXT("被举报者的RoleID"));
FReportReason& NewReason = Param.Reasons.AddDefaulted_GetRef(); // 添加一个新的举报原因
NewReason.ID = 1; // 举报原因ID
NewReason.Title = TEXT("言语辱骂");
NewReason.Extras = MakeShared<FJsonObject>(); // 每一个举报原因的额外数据
NewReason.Extras->SetField(TEXT("Messages"), FXDGJson::ToJsonValue(TArray<FString>{TEXT("聊天记录1"), TEXT("聊天记录2")}));
FReportReason& NewReason2 = Param.Reasons.AddDefaulted_GetRef(); // 添加一个新的举报原因
NewReason2.ID = 2; // 举报原因ID
NewReason2.Title = TEXT("使用外挂");
NewReason2.Extras = MakeShared<FJsonObject>(); // 每一个举报原因的额外数据
NewReason2.Extras->SetStringField(TEXT("Subtype"), TEXT("透视"));
Param.UserDescription = TEXT("举报描述"); // 举报描述
Param.EvidenceFilePaths.Add(TEXT("PC支持相对路径和绝对路径")); // 举报证据文件路径
Param.EvidenceFilePaths.Add(TEXT("Mobile支持沙盒路径和相册路径")); // 传递给 IHttpRequest::SetContentFromStream
// Param.Extras; 所有 Extras 可以为空,默认为空
FXDGReport::Report(Param,
FSimpleDelegate::CreateLambda([]()
{
// 举报成功
}),
FXDGError::FDelegate::CreateLambda([](const FXDGError& Error)
{
// 举报失败
}));
数据结构定义
- Unity
- UE
public class ReportParams
{
public ReporterInfo Reporter { get; } // 举报人
public ReporteeInfo Reportee { get; } // 被举报人
public List<ReasonInfo> Reasons { get; } // 举报原因
public string UserDescription { get; } // 玩家描述
public List<string> EvidenceList { get; } // 玩家添加的附件(本地文件绝对路径)
public Dictionary<string, object> Extras { get; } // 附加信息补充玩家信息,透传给使用方
public class ReporterInfo
{
public Dictionary<string, object> Extras { get; } // 举报人附加信息
}
public class ReporteeInfo
{
public string XdId { get; } // 被举报人 XDID
public Dictionary<string, object> Extras { get; } // 被举报人附加信息
}
public class ReasonInfo
{
public long ID { get; } // 举报原因 ID,后台配置
public string Title { get; } // 原因名称
public Dictionary<string, object> Extras { get; } // 附加信息补充玩家信息,透传给使用方
}
}
/**
* 举报者
*/
struct XDGREPORT_API FReportUser
{
/** 业务方用户自身需求补充的玩家信息,透传给后端 */
TSharedPtr<FJsonObject> Extras;
};
/**
* 被举报者
*/
struct XDGREPORT_API FReportTargetUser
{
/** [必须] 举报方的XDID */
FString XDID;
/** 业务方用户自身需求补充的玩家信息,透传给后端 */
TSharedPtr<FJsonObject> Extras;
};
/**
* 举报原因
*/
struct XDGREPORT_API FReportReason
{
/** [必须] 业务方在举报后台配置的原因id */
int64 ID = -1;
/** 原因名称 */
FString Title;
/** 业务方用户自身需求补充的玩家信息,透传给后端 */
TSharedPtr<FJsonObject> Extras;
};
/**
* 举报的参数
*/
struct XDGREPORT_API FReportParam
{
/** 举报者 */
FReportUser Reporter;
/** [必须] 被举报者 */
FReportTargetUser Target;
/** [必须] 原因 */
TArray<FReportReason> Reasons;
/** 玩家描述 */
FString UserDescription;
/** 文件路径,支持图片,视频 */
TArray<FString> EvidenceFilePaths;
/** 业务方用户自身需求补充的玩家信息,透传给后端 */
TSharedPtr<FJsonObject> Extras;
};