Method signature
Method is used to initialize ads API. It inject a special ads widget which is used to show video ads via other ads SDK methods.
OKSDK.Ads.init(frameId, callbackFunction)
Where:
- frameId - id of an iframe in which ads widget will be placed. Optional parameter. If not specified ok-ads-frame id will be used;
- callbackFunction - callback function that will be called after any other ads SDK method call. Optional parameter. If not specified default callback function will be used.
Callback
We recommend to specify a callback function with following signature:
function adsCallback(message)
Message object is passed to this function an has a following structure:
{
"data": {
"call": {
"method": "methodName",
"arguments": ["argument_1", "argument_2"]
},
"result": {
"status": "resultStatus",
"code": "resultCode"
}
}
}
Where:
- call - method call general info:
- method - method name. Possible values: init, prepare, show;
- arguments - additional arguments.
- result - method call result:
- status - result status. Possible values: ok, error;
- code - additional result data.
Callback message
If ads API is successfully initialized following message will be passed to callback function:
{
"call": {
"method": "init"
},
"result": {
"status": "ok",
"code": "initialized"
}
}
If ads API was not initialized properly a message will contain following data:
{
"call": {
"method": "init"
},
"result": {
"status": "error",
"code": "Error description"
}
}
Example usage
Without callback function:
OKSDK.Ads.init(frameId, callbackFunction);
With callback function:
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;
}
}