Сигнатура метода

Метод используется для инициалиции внутриигровой рекламы для мобильных приложений. Метод добавляет на страницу рекламный виджет, используемый в остальных рекламных методах SDK.

OKSDK.Ads.init(frameId, callbackFunction)

Где:

  • frameId - id фрейма, в котором будет размещен виджет рекламы. Необязательный параметр. Если не указан, то будет использоваться id ok-ads-frame;
  • callbackFunction - callback-функция, которая будет вызвана при выполнении любого рекламного метода SDK. Необязательный параметр. Если не указан, то будет использоваться встроенная callback-функция.

Callback

Для корректной работы рекламы необходимо задать callback-функцию со следующей сигнатурой:

function adsCallback(message)

Функция получает на вход объект message со следующей структурой:

{
    "data": {
        "call": {
            "method": "methodName",
            "arguments": ["argument_1", "argument_2"]
        },
        
        "result": {
            "status": "resultStatus",
            "code": "resultCode"
        }
    }
}

Где:

  • call - информация о выполненном методе:
    • method - название метода. Возможные значения: init, prepare, show;
    • arguments - дополнительные аргументы методы.
  • result - результат выполнения метода:
    • status - общий статус выполнения метода. Возможные значения: ok, error;
    • code - дополнительная информация о выполнении метода.

Callback message

При успешной инициализации рекламного SDK будет получено следующее сообщение:

{
    "call": {
        "method": "init"
    },
    "result": {
        "status": "ok",
        "code": "initialized"
    }
}

При ошибке инициализации сообщение будет следующим:

{
    "call": {
        "method": "init"
    },
    "result": {
        "status": "error",
        "code": "Описание ошибки"
    }
}

Пример вызова

Без указания callback-функции:

    OKSDK.Ads.init(frameId, callbackFunction);

С указанием callback-функции:

    OKSDK.Ads.init(null, adsCallback);

    function adsCallback(message) {
        if (!message.data) {
            return;
        }

        var data = JSON.parse(message.data);

        if (!data.call || !data.call.method) {
            return;
        }

        if (!data.result || !data.result.status) {
            return;
        }

        switch (data.call.method) {
            case "init":
                if (data.result.status === "ok") {
                    console.log("OK Ads initialization complete");
                    OKSDK.Ads.State.init = true;
                } else {
                    console.log("OK Ads failed to initialize");
                    OKSDK.Ads.State.init = false;
                }
                break;
            case "prepare":
                if (data.result.status === "ok") {
                    if (data.result.code === "ready") {
                        console.log("Ad is ready to be shown");
                        OKSDK.Ads.State.ready = true;
                    }
                } else {
                    console.log("Ad is not ready to be shown. Status: " + data.result.status + ". Code: " + data.result.code);
                    OKSDK.Ads.State.ready = false;
                }
                break;
            case "show":
                ads_state.frame_element.style.display = "none";
                if (data.result.status === "ok") {
                    if (data.result.code === "complete") {
                        console.log("Ad is successfully shown");
                        OKSDK.Ads.State.ready = false;
                    }
                } else {
                    console.log("An ad can't be shown. Status: " + data.result.status + ". Code: " + data.result.code);
                    OKSDK.Ads.State.ready = false;
                }
                break;
        }
    }