远程配置

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

要获取保存的标志值,请使用 getFlags() 方法。

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

// 在游戏逻辑中可以添加条件:
if (flags.difficult === 'hard') {
    // 启用高难度。
}
YaGames.init()
    .then(ysdk => ysdk.getFlags())
    .then(flags => {
        // flags 包含一个包含标志的对象。

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

本地配置

我们建议总是将本地标志配置硬编码到游戏代码中,以防万一(例如,由于地铁内的网络问题)无法从服务器获取远程配置。这提升了游戏的可靠性。

为此,getFlags() 方法支持额外的参数。需要在 defaultFlags 字段中传递本地配置(一个平面对象,值为字符串)。

结果对象是远程和本地配置的合并,优先级为远程配置。

YaGames.init()
    .then(ysdk => ysdk.getFlags({ defaultFlags: { difficult: 'easy' } }))
    .then(flags => {
        // flags 包含对象 { difficult: 'easy' }
    });

客户端参数

如果您的游戏存储了有关玩家的状态,例如,他们是否至少使用过一次游戏内货币,通过了多少关卡,是否可以将用户视为核心玩家,那么这些事实可以用于远程配置。了解如何根据条件设置标志的更多信息,请查看 步骤1. 创建标志配置 部分。

客户端参数需要以数组形式通过 getFlags() 方法的 clientFeatures 字段传递。

使用 await 的例子

const ysdk = await YaGames.init(); // 初始化 SDK。
const player = await ysdk.getPlayer(); // 获取玩家信息。
const payingStatus = player.getPayingStatus(); // 获取用户在平台上的付费活跃状态。

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

不使用 await 的例子

// 发送客户端参数 levels=5。
YaGames.init()
    .then(ysdk => ysdk.getFlags({
        defaultFlags: {},
        clientFeatures: [
            { name: 'levels', value: '5' }
        ]})
    )
    .then(flags => {
        // 客户端参数条件未触发。
        // flags.showFullscreenAdOnStart === 'no'
    });

// 发送客户端参数 levels=10。
YaGames.init()
    .then(ysdk => ysdk.getFlags({
        defaultFlags: {},
        clientFeatures: [
            { name: 'levels', value: '10' }
        ]})
    )
    .then(flags => {
        // 客户端参数条件触发了,启动时显示广告。
        // flags.showFullscreenAdOnStart === 'yes'
    });

// 带有两个客户端参数的示例:
YaGames.init()
    .then(ysdk => ysdk.getFlags({
        defaultFlags: {},
        clientFeatures: [
            { name: 'levels', value: '10' },
            { name: 'inAppPurchaseUsed', value: 'yes' }
        ]})
    )
    .then(flags => {

    });

getFlags() 方法的签名和接口

interface IFlags {
    [key: string]: string;
}

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

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

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

备注

技术支持团队将协助您将已完成的游戏发布到 Yandex 游戏平台。关于开发和测试方面的具体问题,其他开发人员将在Discord 频道中进行回答。

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

发送电子邮件
上一篇
下一篇