Пример настройки SDK

Ниже приведены примеры настройки SDK Яндекс Игр при синхронном и асинхронном подключении.

Особенности примера:

  1. Для первого вызова рекламы callback-функции не заданы.
  2. Для второго и всех последующих вызовов заданы все возможные callback-функции.
  3. Кнопке Показать рекламу присвоен обработчик события 'click' (вызов рекламы при каждом нажатии кнопки).
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>Пример страницы с синхронным подключением SDK</title>
    <script src="https://yandex.ru/games/sdk/v2"></script>
    <script>
        YaGames.init().then(ysdk => {
            ysdk.adv.showFullscreenAdv();

            const buttonElem = document.querySelector('#button');

            let commonCounter = 0;
            buttonElem.addEventListener('click', () => {
                let counter = 0;

                function getCallback(callbackName) {
                    return () => {
                        counter += 1;
                        commonCounter += 1;

                        console.log(`showFullscreenAdv; callback ${callbackName}; ${counter} call`);
                    }
                }

                ysdk.adv.showFullscreenAdv({
                    callbacks: {
                        onClose: getCallback('onClose'),
                        onOpen: getCallback('onOpen'),
                        onError: getCallback('onError'),
                        onOffline: getCallback('onOffline')
                    }
                });
            });
        });
    </script>
</head>
<body>
    <button id="button">Показать рекламу</button>
</body>
</html>

Особенности примера:

  1. Для первого вызова рекламы задана callback-функция onClose.

  2. Для второго и последующих вызовов заданы все возможные callback-функции.

  3. В callback-функцию onClose добавлен код, который будет выполняться после закрытия рекламного блока.

  4. Все ошибки, возникающие при работе SDK или при выполнении callback-функций, передаются функции onError.

  5. Кнопке Показать рекламу присвоен обработчик события 'click' (вызов рекламы при каждом нажатии кнопки).

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>Пример страницы с асинхронным подключением SDK</title>
    <script>
        let ysdk;
   
        function initSDK() {
            YaGames
                .init()
                .then(ysdk_ => {
                    ysdk = ysdk_;
                    ysdk.adv.showFullscreenAdv({
                        callbacks: {
                            onClose: wasShown => {
                                console.info('First close')
                            }
                        }
                    });
                })
        }

        document.addEventListener('DOMContentLoaded', () => {
            const buttonElem = document.querySelector('#button');

            let commonCounter = 0;
            buttonElem.addEventListener('click', () => {
                let counter = 0;

                function getCallback(callbackName) {
                    return () => {
                        counter += 1;
                        commonCounter += 1;

                        if (commonCounter % 3 === 0) {
                            throw new Error(`Test error in ${callbackName}, everything okey, it should not abort other code execution`);
                        }

                        console.info(`showFullscreenAdv; callback ${callbackName}; ${counter} call`);
                    }
                }

                function makeSomethingImportant() {
                    console.info('It\'s very important \'console.info\'');
                }

                if (ysdk) {
                    ysdk.adv.showFullscreenAdv({
                        callbacks: {
                            onClose: makeSomethingImportant,
                            onOpen: getCallback('onOpen'),
                            onError: function(error) {
                                console.error(error);
                            },
                            onOffline: getCallback('onOffline')
                        }
                    });
                } else {
                    makeSomethingImportant();
                }
            });
        });
    </script>
</head>
<body>
<!-- Yandex Games SDK -->
<script>
    (function(d) {
        var t = d.getElementsByTagName('script')[0];
        var s = d.createElement('script');
        s.src = 'https://yandex.ru/games/sdk/v2';
        s.async = true;
        t.parentNode.insertBefore(s, t);
        s.onload = initSDK;
    })(document);
</script>
<button id="button">Показать рекламу</button>
</body>
</html>