Удаленная конфигурация

Добавьте использование метода getFlags() из Yandex Games SDK для получения удаленной конфигурации флагов (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' }
    });

Клиентские параметры

Если ваша игра хранит состояние об игроке, например, пользовался ли он хотя бы раз внутриигровой валютой, сколько уровней прошел, можно ли считать пользователя core-игроком, то эти факты можно использовать в удаленной конфигурации. Подробнее о том, как настроить флаг в зависимости от условий, см. в разделе Создать конфигурацию флагов.

Клиентские параметры нужно передавать в виде массива в поле clientFeatures метода getFlags().

Пример с 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 {}

Примечание

Сотрудники службы поддержки помогают разместить готовую игру или WebApp на платформе Яндекс Игр. На прикладные вопросы о разработке и тестировании предметно ответят другие разработчики в Сообществе в Telegram.

Если при использовании SDK Яндекс Игр вы столкнулись с проблемой или у вас появился вопрос, обратитесь в службу поддержки:

Написать в чат