Подключение и использование
Подключение
Внимание
Чтобы ваша игра успешно прошла модерацию, укажите актуальный путь для подключения 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 с помощью лоадера:
-
Запустите игру с debug-панелью:
Через Консоль разработчикаЧерез адресную строку- Откройте Консоль Яндекс Игр.
- Выберите нужную игру.
- В левом верхнем углу нажмите Открыть с debug-панелью.
-
Откройте нужную игру.
-
Добавьте параметр
debug-mode=16в конец адресной строки браузера.Пример ссылки:
https://yandex.ru/games/app/XXXX?debug-mode=16, гдеXXXX— уникальный идентификатор игры.
-
В левом нижнем углу проверьте значение индикатора лоадера:
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 Яндекс Игр вы столкнулись с проблемой или у вас появился вопрос, обратитесь в службу поддержки: