# 集成 Moderation SDK

> 了解如何访问和开始使用 Moderation（审核）后台。

> **Warning:**
>
> 根据《数字服务法案》(DSA) 的规定，如果 Unity 采取的行动会对客户的终端用户产生影响，Unity 必须通知这些终端用户。为了遵循这一要求，如果使用的 Unity Gaming Services（Unity 游戏服务）(UGS) 产品依赖于 Unity Authentication 服务，则必须集成通知 API。
>
> 如需有关 DSA 的更多信息，请参阅[《数字服务法案》- 合规性更新](https://unity.com/legal/digital-services-act)。
>
> 为了使游戏合规，请参阅 [DSA 通知](/authentication/dsa-notifications.md.md)。

在开始使用 Unity Moderation 之前，请确保满足所有[要求](./requirements.md)。

如果在项目中启用了 Safe Text，则可以在 Unity Dashboard（Unity 后台）内访问 Moderation（审核）后台。

您可以按照 [Safe Text](/safe-text/get-started.md) 文档中的步骤在项目中激活该产品。

在项目中激活 Safe Text 后，请执行以下步骤：

1. [确保 Moderation 终端位于白名单中](#ensure-moderation-endpoints-on-the-allowlist)。
2. [添加 Moderation SDK](#import-the-moderation-sdk)。
3. [初始化 Unity 服务](#initialize-unity-services)。

一旦 Moderation 在项目中开始运行，请为项目中的其他成员[分配用户角色](./user-roles.md)“Safety Admin（安全管理员）”和“Safety Moderator（安全仲裁者）”，让他们开始审查举报。

## 确保 Moderation 终端位于白名单中##ensure-moderation-endpoints-on-the-allowlist

如果在项目中使用了[访问控制](/services/access-control.md)，则可能正在应用 [Deny by Default（默认拒绝）](/services/access-control.md#deny-by-default)策略。

如果是这样，为了让 Moderation SDK 能向 Moderation 服务发送举报，您需要赋予玩家发送举报的权限。

将以下策略添加到您的项目中即可授予玩家发送举报的能力：

```json
{
  "Sid": "allow-moderation-report",
  "Action": ["*"],
  "Effect": "Allow",
  "Principal": "Player",
  "Resource": "urn:ugs:moderation-report:/*"
}
```

## 导入 Moderation SDK##import-the-moderation-sdk

您将项目链接到 Unity Dashboard（Unity 后台）后，即可安装最新版 Moderation 包。

使用 [Unity 的 Package Manager（包管理器）](https://docs.unity3d.com/Manual/upm-ui.html)在 Unity 编辑器中导入 Moderation 包。

> **Note:**
>
> 在以下 Unity 版本的 Package Manager（包管理器）中可以使用 Moderation SDK：
>
> * 2021.3.32f1
> * 2022.3.12f1
> * 2023.1.17f1
> * 2023.2.0b15
> * 2023.3.0a11

## 初始化 Unity 服务##initialize-unity-services

Moderation SDK 公开了可用于举报玩家的类的单例实例。要使用它，请初始化 Unity 服务并使用 Unity Authentication 服务 (UAS) 对玩家进行身份验证。

以下代码示例说明如何使用 UAS 对用户进行身份验证：

```cs
using Unity.Services.Core;
using Unity.Services.Authentication;
async void Start()
{
    await UnityServices.InitializeAsync();
    await AuthenticationService.Instance.SignInAnonymouslyAsync();
    if (AuthenticationService.Instance.IsSignedIn)
    {
        // game code.
    }
    else
    {
        Debug.Log("Player was not signed in successfully?");
    }
}
```
