Сигнатура метода
Метод используется для инициалиции внутриигровой рекламы для мобильных приложений. Метод добавляет на страницу рекламный виджет, используемый в остальных рекламных методах 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;
}
}