Подключение и использование

Подключение

Внимание

Чтобы ваша игра успешно прошла модерацию, укажите актуальный путь для подключения SDK Яндекс Игр:

Подключить SDK Яндекс Игр можно двумя равноправными способами:

  • Через тег <script>.
  • Динамической загрузкой — она позволяет программно контролировать процесс подключения и обрабатывать события загрузки.

Сервер Яндекса

Примечание

Для проксирования /sdk.js при разработке используйте локальный сервер. Скачивать файл sdk.js не нужно.

Добавьте в заголовок <head> HTML-страницы строку:

<!-- Yandex Games SDK -->
<script src="/sdk.js"></script>

Используйте атрибуты:

  • async — для неблокирующей загрузки.
  • onload — для выполнения кода после загрузки скрипта.

Пример кода для запуска initSDK после загрузки скрипта. initSDK подразумевает инициализацию SDK:

<!-- Yandex Games SDK -->
<script async src="/sdk.js" onload="initSDK()"></script>

Добавьте в свой тег <script> или JSON-файл фрагмент кода:

const script = document.createElement('script');
script.src = '/sdk.js';
script.async = true;
script.onload = initSDK;
document.body.append(script);

В этом примере initSDK подразумевает инициализацию SDK после загрузки скрипта.

Свой домен

При размещении игры на собственном домене используйте абсолютный путь https://sdk.games.s3.yandex.net/sdk.js вместо относительного /sdk.js:

<!-- Yandex Games SDK -->
<script src="https://sdk.games.s3.yandex.net/sdk.js"></script>

Использование

После загрузки скрипта инициализируйте SDK, используя метод init() объекта YaGames.

Совет

В YaGames.init() и ysdk.getPayments() можно передать опциональный параметр signed: boolean, который предназначен для защиты от накруток. Выбор значения зависит от того, где обрабатываются платежи:

  • Если на стороне клиента — вызовите методы без параметра signed: boolean или передайте signed: false. Методы покупок будут возвращать данные в открытом виде.
  • Если на стороне сервера — передайте signed: true. В таком случае в ответах методов payments.getPurchases() и payments.purchase() все данные возвращаются только в зашифрованном виде в параметре signature.

Инициализация с параметром по умолчанию (signed: false):

const ysdk = await YaGames.init();

Инициализация с параметром signed: true:

const ysdk = await YaGames.init({ signed: true });

 

Проверка

Важно

Скрипт /sdk.js должен быть подключен до выполнения YaGames.init().

Проверьте правильность подключения SDK с помощью лоадера:

  1. Запустите игру с debug-панелью:

    1. Откройте Консоль Яндекс Игр.
    2. Выберите нужную игру.
    3. В левом верхнем углу нажмите Открыть с debug-панелью.
    1. Откройте нужную игру.

    2. Добавьте параметр debug-mode=16 в конец адресной строки браузера.

      Пример ссылки: https://yandex.ru/games/app/XXXX?debug-mode=16, где XXXX — уникальный идентификатор игры.

  2. В левом нижнем углу проверьте значение индикатора лоадера:

    • W — ожидает инициализации.
    • IT — загрузчик SDK инициализирован верно.
    • IF — используется старый лоадер. Загрузите SDK в соответствии с документацией.

Возможные проблемы

Uncaught ReferenceError: YaGames is not defined

Обратите внимание на порядок подключения скрипта sdk: он должен быть подключен до выполнения YaGames.init().

Uncaught ReferenceError: ysdk is not defined

Вы попытались использовать методы SDK (реклама, покупки и т. д.) до момента инициализации SDK. Момент инициализации можно отследить в debug-режиме по сообщению Initialized в консоли. Чтобы контролировать порядок вызовов, добавьте инициализацию SDK перед вызовом метода:

const ysdk = await YaGames.init();

ysdk.adv.showFullscreenAdv();

Пример подключения SDK

<!-- Yandex Games SDK -->
<script async src="/sdk.js" onload="initSDK()"></script>
<script>
    async function initSDK() {
        const ysdk = await YaGames.init();
        ...
    }
</script>

Примечание

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

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

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