Загружать объявления AdSense через переход страницы с помощью jQuery для мобильных устройств

Я читал интернет и несколько дней пытался найти способ для показа объявлений Google Adsense через мобильные переходы jQuery без нарушения условий использования. Я немного застрял, поэтому обращаюсь к мудрейшему сообществу.

Тег Adsense состоит из трех сценариев (i) общего, (ii) списка слотов и (iii) самого отображения. Первые два идут в <head>, последние в <body>.

Я могу отображать рекламу на своей первой странице просто отлично. Проблема возникает с переходом страницы.

Поскольку jQuery Mobile не перезагружает <head>, можно подготовить googletag при первой загрузке <head>. Это устанавливает ограничение максимум на три объявления на странице, что не так много для всего сайта. К тому же это означает, что вам придется перемещать объявление <div>, что тоже не очень хорошо. Наконец, это означает, что вы можете загружать рекламу и не отображать ее, пока пользователь не перейдет на страницу, которой она принадлежит, если вообще когда-либо. Что также не очень совместимо с ToS.

Есть ли способ загрузить новую рекламу при каждом переходе? Если да, то куда мне поместить скрипты Google, чтобы убедиться, что они правильно загружаются?


person Mad Echet    schedule 02.04.2012    source источник


Ответы (2)


Я нашел способ заставить его работать в Google DFP с AdSense, подключенным к DFP. DFP более гибок, так что это было проще.

Вот что я использовал:

  • В <head>: я поместил скрипты Google и определил все рекламные места для всего веб-сайта (вы получите это с помощью «генерировать теги»).
  • На каждой странице: вы размещаете <body> часть сценария, как и везде.

Благодаря этому вы сможете получать новую рекламу каждый раз, когда загружаете новую страницу. Однако, если вы просматриваете страницы, они никогда не обновятся.

Для этого вы можете использовать googletag.pubads().refresh(). Однако вы хотите обновлять только те слоты, которые находятся на странице, которую вы загружаете, иначе вы нарушите некоторые условия. Кроме того, вы не можете refresh слотов, которые еще не отображались, поэтому если вы определили слоты для всего веб-сайта, но все страницы еще не загружены, что вполне вероятно, произойдет сбой.

Но вы можете передать слоты, которые находятся на текущей странице, в функцию refresh(). Вот как я это сделал:

function refreshAds() {
  // Get all the slots
  var allSlots = googletag.pubads().getSlots();
  var slotsToRefresh = Array();
  // Select the slots that are on the current page based on their dom Id
  for (var i=0; i<allslots.length; ++i)
    if (isSlotIdOnTheCurrentPage(allSlots[i].getSlotId().getDomId())) 
      slotsToRefresh.push(allSlots[i]); // I let you implement the logic behind naming ids slots and divs
  if (slotsToRefresh.length > 0)
    googletag.pubads().refresh(slotsToRefresh);
}

$(document).on("pagechange", function() {refreshAds();})

Итак, каждый раз, когда вы возвращаетесь на страницу, слоты обновляются, каждый раз, когда вы переходите на новую страницу, создается новый слот (при условии, что он был определен в <head>).

Надеюсь, это поможет! Возможно, есть способ заставить его работать без проблем в AdSense, но я не пробовал.

person Mad Echet    schedule 07.05.2012
comment
Итак, вам нужно было определить уникальное рекламное место для каждого объявления, показываемого на сайте, верно? Должно быть, это был довольно маленький сайт? - person Kevin; 15.06.2012
comment
Да, это веб-приложение, поэтому очень немногие страницы отображаются много раз. Обновление рекламы здесь спасает жизнь. - person Mad Echet; 17.06.2012
comment
Это отлично. Раньше я даже не знал о DFP. Пришлось сделать несколько модов, чтобы заставить его работать для меня. googletag.display необходимо вызвать один раз перед вызовом googletag.pubads().refresh. - person Tom Kincaid; 14.12.2012
comment
Кто-нибудь может подать заявку в DFP? - person Andres SK; 18.12.2014
comment
Я так думаю, но проверка аккаунта занимает некоторое время. Это DoubleClick для издателей (малый бизнес) - person Mad Echet; 19.12.2014

Возможно, в этой ситуации поможет использование метода jQuery getScript(). Я предлагаю вам попытаться включить это в функцию pageinit. Позвольте мне привести вам краткий пример.

$(document).delegate('[data-role=page]','pageinit',function(){ // this would get executed on page init of every JQM page
    $.getScript('path/to/yourlib.js',function(){ // using getScript should help you be able to load scripts since the head doesn't get loaded again
       Demo(); //This would be code that your lib uses
    });
});
person codaniel    schedule 10.04.2012
comment
Спасибо за повтор. Ваше решение работает для выполнения сценария, но вставка тега <script> будет работать точно так же. На самом деле моя проблема связана с соблюдением условий использования Google. Меня беспокоит, разрешено ли помещать сценарий заголовка в тело страницы (считается ли это модификацией сценария?) и разрешено ли сбрасывать переменные Google. Их документация действительно расплывчата по этому вопросу. - person Mad Echet; 11.04.2012