Интеграция с DSP (на примере getintent)¶
Общее описание¶
Для интеграции с DSP сервисами в первую очередь необходимо установить как именно будут показываться объявлениякреативы, в частности в safeframe или в friendly frameбез iframe.
Для корректной работы кнопки необходим вариант показа объявлений внутри friendly frame или без iframe.
Если информация о способе показа недоступна, ее можно собрать вручную, используя код креатива и запуская его для различных сайтовSSP - посредством трекинговых ссылок будет собираться информация о типе объявления, в котором показывается код, посредством чего можно исключить сайты и SSP с показом в safeFrame.
Пример кода для объявления в DSP¶
Для реального запуска необходимо заменить в блоке #probtn_additional_params параметр domain с getintent_dsp на реальный идентификатор аппа из admin.probtn.com
Также заменить в addLink("https://pixel.probtn.com/1/from-ref?pbdebug=getintent&DeviceUID=&localDomain="+document.domain.replace("www.", "")+"&daction=" + param + suf); pbdebug параметр с getintent на реальный идентификатор аппа из admin.probtn.com
Или возможно воспользоваться сервисом для генерации кодов интеграции для автоматического создания кода с заданными параметрами (ссылка будет добавлена позднее после релиза сервиса).
<div id="probtn_content1">
<div id="probtn_additional_params" style="display: none;">{ "domain": "getintent_dsp", "HideInFrame": false, "useGuidIframe": false}</div>
</div>
<script>
var addLink = function(link) {
var trackingImage = window.self.document.createElement("img");
trackingImage.id = "probtn_getintent_includepb_tracking_image";
trackingImage.alt = "probtn_getintent_includepb_tracking_image";
trackingImage.src = link;
trackingImage.style.cssText = "position: absolute; top:-11111px; left: -11111px; width: 1px; height: 1px;";
document.body.appendChild(trackingImage);
};
var addSuperPixelLink = function(param) {
console.log(param);
var suf = "_ECLICK";
addLink("https://pixel.probtn.com/1/from-ref?pbdebug=getintent&DeviceUID=&localDomain="+document.domain.replace("www.", "")+"&daction=" + param + suf);
return true;
}
function loadJS(current, src, callback) {
var s = current.document.createElement("script");
s.src = src;
s.async = true;
s.onreadystatechange = s.onload = function () {
var state = s.readyState;
if (!callback.done && (!state || /loaded|complete/.test(state))) {
callback.done = true;
callback();
}
};
current.document.getElementsByTagName("head")[0].appendChild(s);
}
var r = {
NO_IFRAME: 0,
IFRAME: 1,
UNKNOWN: 2,
XD_IFRAME: 3
};
function checkIframe() {
try {
if (window.top == window) return "NO_IFRAME";
for (var a = window, f = 0; a.parent != a && 1E3 > f;) {
f++;
if (a.parent.document.domain != a.document.domain) return "XD_IFRAME";
a = a.parent
}
return "IFRAME"
} catch (n) {}
return "XD_IFRAME";
}
addSuperPixelLink(checkIframe() + "_" + "[[SSP]]" + "_" + "[[DOMAIN]]");
if (window.top !== window.self) {
try {
addSuperPixelLink("inIframe");
var probtn_content1 = window.top.document.createElement("div");
probtn_content1.id = "probtn_content1";
probtn_content1.innerHTML = document.getElementById("probtn_content1").innerHTML;
probtn_content1.style.cssText = "display: none;";
window.top.document.body.appendChild(probtn_content1);
loadJS(window.top, "https://cdn.viewst.com/probtn_concat.js", function() {
addSuperPixelLink("probtn_concat_loaded_to_top");
});
} catch(ex) {
console.log("cant go to top");
console.log(ex);
addSuperPixelLink("CantGo_Error_"+ ex.toString());
addSuperPixelLink("CantGoToTopFromIframe");
}
} else {
loadJS(window.self, "https://cdn.viewst.com/probtn_concat.js", function() {
addSuperPixelLink("probtn_concat_loaded_to_self");
});
}
</script>
Описание терминов¶
safeFrame¶
Iframe c url страницы где домен страницы отличается от домена страницы-родителя (на которой показывается данный iframe).
Соответственно в связи с Same Origin Policy из такой iframe страницы невозможно запустить код кнопки на странице-родителе.
Friendly frame¶
Iframe с url страницы где домен страницы совпадает с доменом страницы родителя либо url iframe отсутствует.
И из такого iframe мы можем запустить код кнопки на странице родителе.
Без iframe¶
Размещение кода непосредственно на странице родителе.