---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.4
alternate:
  - https://yandex.com/dev/games/doc/en/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/hi/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/ko/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/ru/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/tr/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/vi/sdk/sdk-config.md
  - https://yandex.com/dev/games/doc/zh/sdk/sdk-config.md
  - href: zh/sdk/sdk-config.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/zh/llms.txt

# 远程配置

<!-- source: zh/_includes/script-common.md -->
<!-- source: zh/_includes/script/index-js.md -->

<!-- endsource: zh/_includes/script/index-js.md -->

<!-- source: zh/_includes/script/requirements-js.md -->

<!-- endsource: zh/_includes/script/requirements-js.md -->

<!-- source: zh/_includes/script/image-modal-js.md -->

<!-- endsource: zh/_includes/script/image-modal-js.md -->
<!-- endsource: zh/_includes/script-common.md -->

要获取远程配置标志（Remote Config），请使用 Yandex Games SDK 中的 `ysdk.getFlags()` 方法。我们建议在游戏启动时请求一次标志。

**方法的签名和接口** {#signature-and-interfaces}

```typescript showLineNumbers
interface IFlags {
    [key: string]: string;
}

interface IClientFeature {
    name: string;
    value: string;
}

interface IGetFlagsParams {
    defaultFlags?: IFlags;
    clientFeatures?: IClientFeature[];
}

function getFlags(getFlagsParams: IGetFlagsParams = {}): IFlags {}
```

接受以下参数：

<div class="table-25 table-2c25">

#|
|| **参数** | **类型** | **描述** ||
|| `name` | `string` | 客户端参数的名称。 ||
|| `value` | `string` | 客户端参数的值。 ||
|| `defaultFlags` | `IFlags` | [本地配置](#local-config)：键值对形式的平面对象。对应在控制台中[设置的](https://yandex.com/dev/games/doc/zh/config.md)远程配置。 ||
|| `clientFeatures` | `IClientFeature[]` | 包含[客户端参数](#client-params)的数组。包含[玩家数据](https://yandex.com/dev/games/doc/zh/sdk/sdk-player.md#profile-data)。 ||
|#

</div>

#### 示例 {#example-getflags}

```javascript showLineNumbers
const ysdk = await YaGames.init();

const flags = await ysdk.getFlags(); // 该方法返回一个包含标志的对象。

// 在游戏逻辑中可以添加条件：
if (flags.difficult === 'hard') {
    // 启用高难度。
}
```


## 本地配置 {#local-config}

{% note tip %}

始终在游戏代码中添加本地标志配置，以防无法从服务器获取远程配置（例如，由于互联网连接问题）。

{% endnote %}

要添加本地配置（一个平面对象，值为字符串），需要在 `ysdk.getFlags()` 方法的附加参数中的 `defaultFlags` 字段中传递它。最终获得的对象是远程和本地配置的合并。远程配置的优先级更高。

#### 示例 {#example-local-config}

```javascript showLineNumbers
const ysdk = await YaGames.init();

const flags = await ysdk.getFlags({ defaultFlags: { difficult: 'easy' } });

if (flags.difficult === 'easy') {

}
```


## 客户端参数 {#client-params}

如果您的游戏存储[玩家数据](https://yandex.com/dev/games/doc/zh/sdk/sdk-player.md)（已通关卡、经验、应用内购买等），则可以在远程配置中使用这些数据。有关如何根据条件配置标志的详细信息，请参阅[步骤1. 创建标志配置](https://yandex.com/dev/games/doc/zh/config.md#create-flag-config)。

客户端参数需要以数组形式在 `ysdk.getFlags()` 方法的 `clientFeatures` 字段中传递。

#### 示例 {#example-client-params}

```javascript showLineNumbers
const ysdk = await YaGames.init();

const player = await ysdk.getPlayer();

const payingStatus = player.getPayingStatus();

// 请求包含用户付费活跃状态客户端参数的标志。
const flags = await ysdk.getFlags({
    clientFeatures: [
        { name: 'payingStatus', value: payingStatus }
    ]
});
```


---

<!-- source: zh/_includes/sdk-support.md -->
{% note info %}

技术支持团队将协助您将已完成的游戏发布到 Yandex 游戏平台。关于开发和测试方面的具体问题，其他开发人员将在[Discord 频道](https://discord.com/invite/wU4p3whr4T){.external}中进行回答。

{% endnote %}

如果您遇到 Yandex Games SDK 方面的问题或有其他问题想要咨询，请联系支持部门：

<!-- source: zh/_includes/button-chat.md -->
<a href="https://yandex.com/chat/#/user/a4fa5c06-75db-9b38-6eea-b1673785f7d5">
  <span class="button">写入聊天信息</span>
</a>
<!-- endsource: zh/_includes/button-chat.md -->
<!-- endsource: zh/_includes/sdk-support.md -->
